Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
带有$addFileds和条件的Mongodb聚合_Mongodb_Nosql - Fatal编程技术网

带有$addFileds和条件的Mongodb聚合

带有$addFileds和条件的Mongodb聚合,mongodb,nosql,Mongodb,Nosql,鉴于: db: 我想运行一个脚本,根据聚合结果更新一个新字段。如果其中一个值(val1、val2)为空,则结果为真 下面是我对聚合所做的操作,然后我将检查并更新所有行: db.valTest.aggregate( [{ "$addFields": { "val.selected": { '$or': [{ 'val1.val': ''

鉴于:

db:

我想运行一个脚本,根据聚合结果更新一个新字段。如果其中一个值(val1、val2)为空,则结果为真

下面是我对聚合所做的操作,然后我将检查并更新所有行:

db.valTest.aggregate(
    [{
            "$addFields": {
                "val.selected": {
                    '$or': [{
                        'val1.val': ''
                    }, {
                        'val2.val': ''
                    }]

                }
            }
        },
        {
            "$group": {
                "_id": "$_id",
                "id": {
                    "$first": "$id"
                },
                "value": {
                    "$first": "val1.val"
                },
                "result": {
                    "$push": {
                        "val": "val1.val",
                        "selected": "val.selected"
                    }
                }
            }
        }

    ]
)
但是,我没有得到正确的结果。我希望得到如下结果:

{
   id:"112",
   val1: {val:""},
   val2: {val:"123"},
   result: true
},
{
   id:"114",
   val1: {val:"4545"},
   val2: {val:"123"},
   result: false
}
目前,我得到以下错误:

"message" : "FieldPath field names may not contain '.'.",
您需要对匹配条件使用聚合运算符

db.collection.aggregate([
  { "$addFields": {
    "result": {
      "$cond": [
        { "$or": [{ "$eq": ["$val1.val", ""] }, { "$eq": ["$val2.val", ""] }] },
        true,
        false
      ]
    }
  }}
])
db.collection.aggregate([
  { "$addFields": {
    "result": {
      "$cond": [
        { "$or": [{ "$eq": ["$val1.val", ""] }, { "$eq": ["$val2.val", ""] }] },
        true,
        false
      ]
    }
  }}
])