#mongodb #spring-data-mongodb
#mongodb #spring-data-mongodb
Вопрос:
В моей коллекции есть несколько адресов, и я хочу получить все из них, как я могу это сделать? Я пробовал ниже, но это не сработало должным образом.
Query query = new Query();
query.fields().include("Address");
List<Address> list1 = template.find(query, Address.class);
System.out.println(list1);
Вот коллекция
{
"_id" : ObjectId("592c7029aafef820f432c5f3"),
"_class" : "lankydan.tutorial.mongodb.documents.Person",
"firstName" : "John",
"secondName" : "Doe",
"dateOfBirth" : ISODate("2017-05-29T20:02:01.636 01:00"),
"address" : [
{
"addressLineOne" : "19 Imaginary Road",
"addressLineTwo" : "Imaginary Place",
"city" : "Imaginary City",
"country" : "US"
},
{
"addressLineOne" : "22 South Road",
"addressLineTwo" : "South Place",
"city" : "CA",
"country" : "US"
}
],
"profession" : "Winner",
"salary" : 100,
"hobbies" : [
{
"name" : "Badminton"
},
{
"name" : "TV"
}
]
}
Приведенное ниже работает хорошо, но я теряю метод findAll () для сбора данных пользователем. Как восполнить этот пробел?
@Query(value = "{}", fields = "{_id : 0, address:1}")
List<User> findAll();
Ответ №1:
Вам нужно удалить _id
from query fields
, добавив exclude
оператор в query
, как показано ниже:
Query query = new Query();
query.fields().include("Address").exclude("_id");
List<Address> list1 = template.find(query, Address.class);
System.out.println(list1);
Надеюсь, это решит вашу проблему.