我在集合中有一个文档,该文档具有一个名为“ myList”的字段,它具有列表项,我需要能够查询具有“状态”字段为“ good”和“ doneBy”的值的集合文档“ myList”字段中“ system”的名称:
[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"
}
]
它应返回所有列表项受此列表中第一个限定的所有文档。即使第二个列表项具有“不良”,它也应返回具有这两个列表项的“ myList”这个集合文档。
我发现搜索其中一个字段是这样,但是如何同时进行,我不确定语法。
db.getCollection('[collection]').find({myList : { $elemMatch : { "status" : "good" }}})
答案 0 :(得分:0)
我相信我找到了:
db.getCollection('[collection]')find({ myList:
{ $all: [
{$elemMatch : { "status" : "good" }},
{$elemMatch : {"doneBy" : "System"}}
]
} })