[英]Querying a MongoDB collection with documents containing an array of (sub)documents where ALL documents in the array match a condition
假設您有一個名為comment的mongoDB集合,其中包含如下文檔:
{
"_id" : ObjectId("55fc4e8f2b21ff102bb20d94"),
"userName" : "user0053",
"comment" : [
{
"timestamp" : ISODate("2015-09-18T17:49:03.678Z"),
"title" : "Some title XYZ",
"status" : "Approved",
"content" : "blah blah blah"
},
{
"timestamp" : ISODate("2015-09-18T17:49:03.678Z"),
"title" : "Some nice looking title",
"status" : "Approved",
"content" : "blah blah blah"
},
{
"timestamp" : ISODate("2015-09-18T17:49:03.678Z"),
"title" : "A title",
"status" : "Spam",
"content" : "blah blah blah"
}
]
}
comment
元素是一個文檔數組,每個文檔包含幾個元素,其中一個狀態具有3個(或任何一個)可能的值,例如Approved , Spam , PendingReview 。
我想查詢集合中其comment元素包含一個數組的所有文檔,其中所有文檔的狀態都為“ 已批准 ”。
在上面的示例中,該文檔不合格,因為至少有一個注釋元素的狀態不同於“已批准”。
我相信這不能通過$ all和$ elemMatch選項來完成,但是需要通過Aggregate管道來完成。 我只是無法弄清楚如何。
以最簡單的形式,可以使用$ nin實現。
db.collection.find({"comment.status" : {$nin : ["Spam" , "PendingReview"]}})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.