2016-10-27 5 views
1

Я работаю с монго в течение нескольких месяцев, и сейчас я боюсь.mongo Поиск Java по массиву

Вот пример документа из моей базы данных:

"_id" : ObjectId("5732d96fed40761e640a3f3e"), 
"_familyId" : "12345", 
"_applications" : [ 
{ 
    "_applicationRID" : "123456", 
    "_applicationDate" : "01012000", 
    "_isRepresentative" : false, 
    "_applicationId" : { 
      "CC" : "AB", 
      "SN" : "123456789", 
      "KC" : "A" 
    }, 
    "_publications" : [ 
    { 
     "_publicationRID" : "123456789", 
     "_publicationDate" : "01012000", 
     "_flaId" : "AB123456789A", 
     "_publicationId" : { 
       "CC" : "AB", 
       "SN" : "1234567", 
       "KC" : "B" 
     }, 

[...] 

Теперь я пытаюсь сделать collection.find() в Java на массив. Я знаю все поля, содержащиеся в _publicationId, и мне нужно найти по _publicationId, потому что у него есть индекс, но не поля внутри него.

В оболочке было бы:

db.collection.find({ 
    "_applications._publications._publicationId": { 
     "CC": "AB", 
     "SN": "1234567", 
     "KC": "B" 
    } 
}) 

и это работает отлично.

с помощью Java, я не могу найти правильный синтаксис:

collection.find("_applications._publications._publicationId", ???) 

ответ

0

Вы должны попробовать с запросом следующего типа, который фактически является точным эквивалентом запроса в Java:

DBObject query = new BasicDBObject(
    "_applications._publications._publicationId", 
    new BasicDBObject("CC", "AB").append("SN", "1234567").append("KC", "B") 
); 
DBCursor cursor = collection.find(query); 
+1

Спасибо за ваш быстрый ответ! Он отлично работает! –

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