0
假設你有一個MongoDB的集合稱爲註釋包含這樣的文件,證件:查詢的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不同,所以文檔不具備資格。
我相信這不能用$ all和$ elemMatch選項完成,但它需要使用Aggregate管道來完成。我只是無法弄清楚如何。
在它最簡單的形式,這可能是與'$ nin'實現我想:'db.collection.find({ 「comment.status」:{$寧: 「垃圾郵件」,「PendingReview 「]}})' –
哇...那麼簡單!非常感謝你,它實際上是有效的。如果你有點麻煩,請創建一個答案,我會接受它。 – agarcian