【问题标题】:I have to check the condition if both condition are true then its 1 else 0 in MongoDB如果两个条件都为真,那么我必须检查条件,然后在 MongoDB 中为 1,否则为 0
【发布时间】:2021-09-23 17:15:24
【问题描述】:

我必须检查value 是否为less equal 100"fl1":1 then "fl2": 1 else :0。请检查预期的输出。

{
    "data": [
        {
            "value": 100,
             "fl" :1
        },
        {
            "value": 300,
             "fl" :0
        },
        {
            "value": 14,
             "fl" :0
        },
        {
            "value": 3
             "fl" :0
        },
        {
            "value": 30,
             "fl" :1
        },
        {
            "value": 60,
             "fl" :1
        }
    ]
}

预期输出:

{
    "data": [
        {
            "value": 100,
             "fl" :1,
             "fl2":1
        },
        {
            "value": 300,
             "fl" :0,
             "fl2":0
        },
        {
            "value": 14,
             "fl" :0,
             "fl2":0
        },
        {
            "value": 3
             "fl" :0,
             "fl2":0
        },
        {
            "value": 30,
             "fl" :1,
             "fl2":1
        },
        {
            "value": 60,
             "fl" :1,
             "fl2":1
        }
    ]
}

【问题讨论】:

    标签: arrays mongodb mongodb-query aggregation-framework


    【解决方案1】:

    查询

    • 数据地图
    • 如果value<100 AND fl=1 => 使用合并添加字段fl2:1
    • 否则使用合并添加字段fl2:0

    Test code here

    db.collection.aggregate([
      {
        "$set": {
          "data": {
            "$map": {
              "input": "$data",
              "in": {
                "$cond": [
                  {
                    "$and": [
                      {
                        "$lte": [
                          "$$m.value",
                          100
                        ]
                      },
                      {
                        "$eq": [
                          "$$m.fl",
                          1
                        ]
                      }
                    ]
                  },
                  {
                    "$mergeObjects": [
                      "$$m",
                      {
                        "fl2": 1
                      }
                    ]
                  },
                  {
                    "$mergeObjects": [
                      "$$m",
                      {
                        "fl2": 0
                      }
                    ]
                  }
                ]
              },
              "as": "m"
            }
          }
        }
      }
    ])
    

    【讨论】:

    • 如果我们必须复制对象fl,我们该怎么做呢? Anotherquestion你明白我的意思了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    相关资源
    最近更新 更多