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