MongoDB:查找数组中元素具有空值的记录

时间:2014-02-23 15:26:44

标签: mongodb

考虑以下文件:

{
    "_id": 1,
    "properties": [
        {
            "key": "foobar",
            "value": null
        },
        {
            "key": "xxx",
            "value": "yyy"
        }
    ]
}

属性已编入索引:

db.collections.ensureIndex('properties')

我想查找关键value的{​​{1}}为foobar的所有文档。

虽然此查询确实找到了值具有所需值的所有元素:

null

以下内容不会返回任何结果:

db.collections.find({ properties: { key: 'xxx', value: 'yyy' } })

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

使用Ilan提到的$type运算符,但您需要将其与$elemMatch一起使用才能在这种情况下正常工作,否则$type将不会被评估为运算符:

 
db.collections.find({properties: {
    $elemMatch: { key: 'foobar', value: { $type: 10 }}
}})

答案 1 :(得分:0)

使用$type operator

db.collections.find({ properties: { key: 'foobar', value: { $type: 10 } } })

来自文档:

  

{cancelDate:{$ type:10}}查询匹配包含cancelDate字段的文档,其值仅为null ;即,cancelDate字段的值为 BSON Type Null(即10)