我对查询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
(锁定状态为
符号
查询运行,但返回零结果(尽管有许多对象应该返回)。我想知道是否有语法错误是因为
锁定状态
是symbol类型。这里可能有什么错误?
我的问题:
db.getCollection('engine').find({
$and: [
{"decoded_payload":{
$exists: true,
$elemMatch: {"lock_status":{$exists:true} }
}
},
{"imsi": "12345"}
]})
.sort({"decoded_payload.timestamp":-1})