2016-09-10 3 views
0

Я использую MongoDB 3.2 с Java. Я прочитал документацию, и он говорит, чтобы использовать org.bson.BsonDocument, поскольку другие варианты, такие как BSONObject и Document, устарели. Теперь у меня есть запрос, похожий на:MongoDB запрос «найти» с несколькими документами запроса

db.schools.find({ zipcode: "63109" }, 
    { students: { $elemMatch: { school: 102 } } }) 

Мне интересно: как я могу написать этот запрос на Java?

Примечание: Здесь мы имеем два документа внутри функции find, в то время как он принимает только одного Bson Document или кратное Bson Element (ы).

Любая помощь будет оценена по достоинству.

ответ

1

Попробуйте использовать один документ для условия, как db.schools.find({ zipcode: "000000", students: { $elemMatch: { school: 102 }});

EDIT:

Таким образом, вы используете Projection. В драйвере java mongodb 3.3 есть: общедоступный поиск DBCursor (запрос DBObject, проекция DBObject). Я думаю, вам нужно обновить драйвер java mongodb.

+0

Я попытался, но он возвращает все элементы массива, которые я не хочу. – user3925365

+0

Вы хотите запросить все школы, у которых есть 63109 zipcode, а в массиве «студентов» вложенных документов есть какой-либо элемент с «school» равен 102? –

+0

В моем случае есть только одна школа с zipcode, как 63109, которая имеет несколько поддокументов в студенческом массиве, из которых я просто хочу, чтобы школа имела 102. – user3925365

Смежные вопросы