【问题标题】:Split the using $arrayElement if its not there then NA in mongoDB拆分使用 $arrayElement 如果它不存在然后 NA 在 mongoDB
【发布时间】:2021-09-13 13:00:29
【问题描述】:

解释:

我正在使用,

"A":{ "$arrayElemAt" :[ {"$split" : ["$info_id" , "_"]},0]},
"B":{ "$arrayElemAt" :[ {"$split" : ["$info_id" , "_"]},1]},
"C":{ "$arrayElemAt" :[ {"$split" : ["$info_id" , "_"]},2]},

但如果在第二次_ 之后什么都没有,那么我希望输出为“NA”。

文档 1:

  "info": {
    "id": "2_452_1",
  },

文档 2:

  "info": {
    "id": "9_5",
  },

预期输出文档 1:

{ 
  "A": "2",
  "B": "452",
  "C": "1"
}

预期输出文档 2:

{ 
  "A": "9",
  "B": "5",
  "C": "NA"
}

【问题讨论】:

    标签: arrays mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:
    • $split 用“_”分割id 字符串
    • $arrayElemAt 从拆分结果数组中获取特定元素
    • $ifNull检查上述操作的返回结果是否为null然后返回“NA”
    db.collection.aggregate([
      { $project: { info: { $split: ["$info.id", "_"] } } },
      {
        $project: {
          A: {
            $ifNull: [{ $arrayElemAt: ["$info", 0] }, "NA"]
          },
          B: {
            $ifNull: [{ $arrayElemAt: ["$info", 1] }, "NA"]
          },
          C: {
            $ifNull: [{ $arrayElemAt: ["$info", 2] }, "NA"]
          }
        }
      }
    ])
    

    Playground

    【讨论】:

      猜你喜欢
      • 2013-12-07
      • 2015-05-11
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      相关资源
      最近更新 更多