0
以下數據存儲在MongoDB中。我正在使用Spring-Data並將數據存儲到mongoDB中。 如果我想檢索字段(「id」或「Name」),我可以做,但如果我想檢索子字段(「firstName」或「lastName」),我不能。從mongoDB中檢索嵌入文檔
(eg。)如果我想從下面的數據中檢索子字段「lastName」,我不能。在這方面,請親愛的幫助我。 在此先感謝。
數據MongoDB中存儲:
{
"id":101,
"name": {"firstName":"Mark",
"lastName":"Antony"
}
}
我使用的代碼是:
PersonService.java
public List<Audit> searchPerson(Audit audit)
{
List<NameDetails> name=audit.getName();
return mongoTemplate.find(new Query(Criteria.where("name.lastName").is(name.get(0))), Audit.class,COLLECTION_NAME);
}
PersonController.java
@RequestMapping(value = "/person/search", method = RequestMethod.GET)
public String search(@ModelAttribute Audit audit, ModelMap model) {
model.addAttribute("personList", personService.searchPerson(audit));
return "output";
}
Audit.java
@Document
public class Audit {
@Id
private String id;
private List<NameDetails> name;
public String getId() {
System.out.println("Person: getId");
return id;
}
public void setId(String id) {
System.out.println("Person: setId");
this.id = id;
}
public List<NameDetails> getName() {
System.out.println("Audit: getName");
return name;
}
public void setName(List<NameDetails> name) {
System.out.println("Audit: setName");
this.name = name;
}
}
NameDetails.java
package com.register.mongo.model;
public class NameDetails {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
System.out.println("NameDetails: setFirstName");
this.firstName = firstName;
}
public String getLastName() {
System.out.println("NameDetails: getLastName");
return lastName;
}
public void setLastName(String lastName) {
System.out.println("NameDetails: setLastName");
this.lastName = lastName;
}
}
(output.jsp的)UI頁
<form action="person/search" method="get">
<table>
<tr><td>
<label>Name</label>
<input type="text" id="lastName" name="lastName"/>
</td></tr>
<tr><td>
<input type="submit" value="Search"/>
</td></tr>
</table>
</form>
<table border="2">
<c:forEach var="person" items="${personList}">
<tr>
<td>${person.id}</td>
</tr>
<tr>
<td>${person.lastName}</td>
</tr>
</c:forEach>
</table>
感謝您的關注。我已經完成了你所說的,但是它拋出空指針異常 – yoganandh 2014-10-09 06:47:28
在哪一行拋出NPE? – 2014-10-09 10:59:45
在return語句中。在這一行錯誤:return mongoTemplate.find( new Query(Criteria.where(「name.lastName」)。is(name.get(0).getLastName())), Audit.class,COLLECTION_NAME); – yoganandh 2014-10-09 12:01:50