在mongo shell中,我试图检查一个JSON推入变量是否具有字段名称或不是。但是,由于缺少某些东西,我得到错误。mongodb:检查该字段是否存在于JSON中
var p= db.monit.findOne({_id: 0})
if ("p.pay[0].reR": {$exists: true})
print(p.pay[0].reR)
在上面的代码,我想检查是否reR
场变量p
推JSON文档中存在。
在mongo shell中,我试图检查一个JSON推入变量是否具有字段名称或不是。但是,由于缺少某些东西,我得到错误。mongodb:检查该字段是否存在于JSON中
var p= db.monit.findOne({_id: 0})
if ("p.pay[0].reR": {$exists: true})
print(p.pay[0].reR)
在上面的代码,我想检查是否reR
场变量p
推JSON文档中存在。
你混合两种不同的东西。必须在mongoDB查询中使用 $exists。 这里您需要的是javascript方法obj.hasOwnProperty()。 像这样使用它:
var p= db.monit.findOne({_id: 0})
if (p.pay[0].hasOwnProperty("reR")){
print(p.pay[0].reR);
}
使用查询作为内$exists
操作:
var p = db.monit.findOne({
"_id": 0,
"pay.0.reR": { "$exists": true }
})
if (p !== null) printjson(p.pay[0].reR)
这将寻找statisfies在_id具有值0 AND
有$exists
嵌入文档与属性上面的查询文件reR
作为pay
数组的第一个元素(使用dot notation)。
我不能检查这个在初始级别,因为该字段是否存在,我需要执行一些其他操作,如果该字段存在,还有额外的计算需要执行。所以,我想检查字段是否存在于变量'p'中 –
我想你应该尝试使用,
var p=db.monit.findOne({_id: 0});
var q = db.monit.findOne("p.pay[0].reR": {$exists: true});
if(q)
print(p.pay[0].reR);
它给了我空值。虽然我修改从这个查询得到的解决方案,我正在寻找一个优化的查询,我不回看集合后,我加载数据到变量。这可能吗? –
@felix:这是工作..........你可以发布这个答案。我会在你发布后标记。 –