Mongo Query для 2 значений в списке массивов в поле документа - PullRequest
0 голосов
/ 14 января 2019

У меня есть документ в коллекции, который имеет поле с именем «myList», в нем есть элементы списка, и мне нужно иметь возможность запрашивать документы коллекции, которые имеют поле «status» со значением «good» и «doneBy» со значением "system" в поле "myList":

[collection].myList
[
    {
    "location" : "3826487.pdf",
    "status" : "good",
    "time" : ISODate("2017-06-27T20:03:46.512Z"),
    "reportIdx" : 0,
    "doneBy" : "System"
    },
    {
    "location" : "rt-0.pdf",
    "status" : "bad",
    "time" : ISODate("2017-06-28T16:24:16.559Z"),
    "reportIdx" : 0,
    "doneBy" : "System"
    }
]

Должны быть возвращены все документы, которые имеют элемент списка, квалифицированный первым в этом списке. Несмотря на то, что второй элемент списка имеет «bad», он должен вернуть этот документ коллекции с «myList», имеющим эти 2 элемента списка.

Я понял, что поиск одного из полей будет таким, но как сделать оба, я не уверен в синтаксисе.

 db.getCollection('[collection]').find({myList  : { $elemMatch : { "status" : "good" }}}) 

1 Ответ

0 голосов
/ 15 января 2019

Мне кажется, я нашел это:

 db.getCollection('[collection]')find({ myList: 
 { $all: [ 
        {$elemMatch : { "status" : "good" }}, 
        {$elemMatch : {"doneBy" : "System"}} 
         ] 
  } })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...