[英]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.