使用MongoDB查询文档数组

时间:2014-11-10 13:38:11

标签: mongodb

我有一个包含两个文档的集合:

{
    "type":"s",
    "disp":[
        {
            "quantity":1,
            "date":20141109
        },
        {
            "quantity":1,
            "date":20141110
        }
    ]
},
{
    "type":"d",
    "disp":[
        {
            "quantity":1,
            "date":20141109
        },
        {
            "quantity":0,
            "date":20141110
        }
    ]
}

我必须进行查询(带有一个或多个日期)来检索所有给定日期的数量大于0的文档。

因此,如果我搜索日期20141109,那么我必须检索两者,但搜索20141110或两个日期20141109和20141110应仅返回类型" s"因为它是每个用作参数的日期数量大于0的唯一

P.S。对不起我的英语,它不是我的第一语言

1 个答案:

答案 0 :(得分:2)

要为一个日期执行此类匹配,请使用$elemMatch

db.test.find({ "disp" : { "$elemMatch" : { "quantity" : { "$gt" : 0 }, "date" : 20141109} } })

对于多个日期,您需要使用$and

组合上述查询
db.test.find({ "$and" : [
    { "disp" : { "$elemMatch" : { "quantity" : { "$gt" : 0 }, "date" : 20141109 } } },
    { "disp" : { "$elemMatch" : { "quantity" : { "$gt" : 0 }, "date" : 20141110 } } }
] })