使用包含(子)文档数组的文档查询MongoDB集合,其中数组中的所有文档都与条件匹配

时间:2015-09-18 17:58:57

标签: arrays mongodb mongodb-query

假设您有一个名为comments的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

我想查询集合中的所有文档,其注释元素包含一个数组,其中所有文档的状态为" 已批准"。

在上面的示例中,文档不符合条件,因为至少有一个注释元素的状态与Approved不同。

我认为使用$ all和$ elemMatch选项无法做到这一点,但需要使用Aggregate管道完成。我只是无法弄清楚如何。

0 个答案:

没有答案