Mongodb $ exists查询产生空结果

时间:2014-07-23 12:41:34

标签: mongodb

我有一个这样的集合:

[{
    _id: 'XXX',
    name: 'Foo',
    device: {
        android: 'SOME_STRING'
    }
},{
    _id: 'XXZ',
    name: 'BAR',
    device: {
        ios: 'SOME_DIFFERENT_STRING'
    }
}]

我想查询android或ios设备的项目。所以:

var query = {
    device : {
        android: {
            $exists: true
        }
    }
}

collection.find(query)

但是这个查询总是给我一个空的结果,尽管数据库中有一些带有device.android的项目。

任何想法有什么不对?

1 个答案:

答案 0 :(得分:1)

错误的查询形式。您需要dot notation

db.collection.find({ "device.android": { "$exists": true } })

原因是嵌套对象表单对于查询引擎而言是显而易见的,并且在第一级它正在寻找"确切的"比赛。所以" $存在"被视为文字而非查询运算符。