MongoDB中的嵌入式符号

时间:2019-02-13 22:06:56

标签: mongodb nosql

我是查询MongoDB的新手,但是在过滤存在某些符号的对象时遇到了困难。例如:

我的收藏集engine中有一些结构如下的对象:

{
    "_id" : ObjectId("5c3a5efa6b0526729490cb2f"),
    "imsi" : "12345",
    "class_name" : "foo",
    "decoded_payload" : {
        "timestamp" : 1547329260,
        "lock_status" : "LOCKED"
    },
    "direction" : "in",
    "created_at" : ISODate("2019-01-12T21:41:14.998Z")
}

我的目标是获取imsi为12345且包含decoded_payload且包含lock_status的对象(锁定状态为符号类型,而不是字符串) 。许多对象不包含这些键,因此我想过滤掉那些键。

查询运行,但返回零结果(尽管应该返回许多对象)。我想知道是否存在因为lock_status是符号类型而被忽略的语法错误。这可能是什么错误?

我的查询:

db.getCollection('engine').find({

$and: [

    {"decoded_payload":{
    $exists: true,
    $elemMatch: {"lock_status":{$exists:true} } 
        }
    },

    {"imsi": "12345"}


    ]})
.sort({"decoded_payload.timestamp":-1}) 

1 个答案:

答案 0 :(得分:1)

尝试一下

db.getCollection('engine')
.find({"imsi": "12345", "decoded_payload": {$exists: true}, "decoded_payload.lock_status":{$exists:true}})
.sort({"decoded_payload.timestamp":-1})