如何在mongodb上获取具有特殊条件的所有数据

时间:2014-11-19 11:12:40

标签: mongodb mongodb-query

如何获取条件discountPrice的所有数据不是nil?

如果我在我的mongo db中有这样的对象:

当我执行此查询" db.products.find()"时,我得到如下结果:

{
    "_id" : ObjectId("123456778"),
    "items" : [
        {
            "discountPrice" : 159200,
            "_id" : ObjectId("54697e689857572459444162"),
        }
    ]
},
{
    "_id" : ObjectId("847446468"),
    "items" : [
        {
            "discountPrice" : nil,
            "_id" : ObjectId("54697e689857572459444162"),
        }
    ]
}

如何得到这样的结果:

{
        "_id" : ObjectId("123456778"),
        "items" : [
            {
                "discountPrice" : 159200,
                "_id" : ObjectId("54697e689857572459444162"),
            }
        ]
    }

怎么做?

2 个答案:

答案 0 :(得分:3)

您可以使用$ne运算符来匹配"不等于"到null

db.products.find( { "items.discountprice": { "$ne": null } } )

我已将nil的引用更改为null,因为nil不是valid BSON type。我假设您使用的是使用nil支持null的ruby。使用你的mongodb驱动程序,我认为你仍然能够实际提供值nil,但在这种语言不可知的帖子中,正确的值将是null

答案 1 :(得分:2)

你可以这样做:

 db.products.find({'items.discountPrice':{ '$ne': null }});

有关查询的更多信息,请访问:http://docs.mongodb.org/manual/reference/operator/query/exists/

编辑:使用null的更新示例。