Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongodb:检查JSON中是否存在该字段_Json_Mongodb - Fatal编程技术网

mongodb:检查JSON中是否存在该字段

mongodb:检查JSON中是否存在该字段,json,mongodb,Json,Mongodb,在MongoShell中,我试图检查推送到变量中的JSON是否具有字段名。但是,由于缺少某些内容,我得到了一个错误 var p= db.monit.findOne({_id: 0}) if ("p.pay[0].reR": {$exists: true}) print(p.pay[0].reR) 在上面的代码中,我试图检查推入变量p的JSON文档中是否存在reR字段,在查询中使用操作符如下: var p = db.monit.findOne({ "_id": 0, "p

在MongoShell中,我试图检查推送到变量中的JSON是否具有字段名。但是,由于缺少某些内容,我得到了一个错误

var p= db.monit.findOne({_id: 0})
if ("p.pay[0].reR": {$exists: true})
    print(p.pay[0].reR)
在上面的代码中,我试图检查推入变量
p
的JSON文档中是否存在
reR
字段,在查询中使用操作符如下:

var p = db.monit.findOne({
    "_id": 0,
    "pay.0.reR": { "$exists": true }
})
if (p !== null) printjson(p.pay[0].reR)
这将查找对上述查询进行统计的文档,其中_id的值为0
,并且
中有一个属性为reR的嵌入文档,作为
支付
数组的第一个元素(使用)。在查询中使用操作符,如下所示:

var p = db.monit.findOne({
    "_id": 0,
    "pay.0.reR": { "$exists": true }
})
if (p !== null) printjson(p.pay[0].reR)

这将查找一个文档,该文档统计上述查询,其中_id的值为0
,并且
在那里一个嵌入文档,其属性为
reR
,作为
pay
数组的第一个元素(使用)。

我认为您应该尝试使用

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);

我想你应该试试

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);

你在混合两种不同的东西。 必须在mongoDB查询中使用。 这里需要的是javascript方法。 像这样使用它:

 var p= db.monit.findOne({_id: 0})
 if ( p.pay[0].hasOwnProperty("reR")){
        print(p.pay[0].reR);
    }

你在混合两种不同的东西。 必须在mongoDB查询中使用。 这里需要的是javascript方法。 像这样使用它:

 var p= db.monit.findOne({_id: 0})
 if ( p.pay[0].hasOwnProperty("reR")){
        print(p.pay[0].reR);
    }

我无法在初始级别检查此项,因为该字段是否存在,我需要执行一些其他操作,如果该字段存在,则需要执行额外的计算。因此,我想检查变量
p
中是否存在该字段。我无法在初始级别检查该字段,因为该字段是否存在,我需要执行一些其他操作,如果该字段存在,则需要执行额外的计算。因此,我想检查变量
p
中是否存在该字段。它给我空值。虽然我进行了修改以从这个查询中获得解决方案,但我正在寻找一个优化的查询,在将数据加载到变量中之后,我不会回顾集合。这可能吗?它给我空值。虽然我进行了修改以从这个查询中获得解决方案,但我正在寻找一个优化的查询,在将数据加载到变量中之后,我不会回顾集合。这可能吗?@felix:它正在工作。。。。。。。。。。你能把这个贴出来作为答案吗。我会在你发帖后做标记。@felix:它正在工作。。。。。。。。。。你能把这个贴出来作为答案吗。我会在你发帖后做标记。