繁体   English   中英

值如何成为 MonogoDB 数组中的键值?

[英]How value become value as an key in MonogoDB array?

说明:我想将值转换为键的一部分,在文档 1 中将"xyz"替换为v ,在文档 2 中将"abc"替换为v 注意:有多个文档,我不知道文档 3“sig_nam”的值是什么。

1号文件


  "sig_nam": "xyz",
  "cont_name": "1",
  "t_v": [
   {
      "t": "2020-11-20T03:00",
      "v": 0
    },
    {
      "t": "2020-10-25T03:00",
      "v": 0
    }
]
}

2号文件

{
  "sig_nam": "abc",
  "cont_name": "1",
  "t_v": [
   {
      "t": "2020-11-20T03:00",
      "v": 0
    },
    {
      "t": "2020-10-25T03:00",
      "v": 0
    }
]
}


预计 Output 文档号 1


  "sig_nam": "xyz",
  "cont_name": "1",
  "t_v": [
   {
      "t": "2020-11-20T03:00",
      "xyz": 0
    },
    {
      "t": "2020-10-25T03:00",
      "xyz": 0
    }
]
}

预计 Output 文档号 2

{
  "sig_nam": "abc",
  "cont_name": "1",
  "t_v": [
   {
      "t": "2020-11-20T03:00",
      "abc": 0
    },
    {
      "t": "2020-10-25T03:00",
      "abc": 0
    }
]
}
  • $map迭代t_v数组的循环
  • $arrayToObject ,设置ksig_namv为 count 和相同的t ,包装到一个数组括号,它将转换为 object
db.collection.aggregate([
  {
    $addFields: {
      t_v: {
        $map: {
          input: "$t_v",
          in: {
            $arrayToObject: [[
              { k: "t", v: "$$this.t" },
              { k: "$sig_nam", v: "$$this.v" }
            ]]
          }
        }
      }
    }
  }
])

操场

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM