I have multiple documents of below structure.

"GENUS_DATA": {
        "File_6489248.ZLM": {
            "MeterID_6489248": {}
                            }
              }

"GENUS_DATA": {
        "File_12345.ZLM": {
            "MeterID_12345": {}
                          }
              }

我要替换文件\u 6489248.ZLM和File\u 12345.名称为"File name"的ZLM作为键

推荐答案

一个选项是将$objectToArray与更新管道一起使用:

db.collection.update({},
[
  {$set: {GENUS_DATA: {$objectToArray: "$GENUS_DATA"}}},
  {$project: {GENUS_DATA: {"File-Name": {$first: "$GENUS_DATA.k"},
        "data": {$first: "$GENUS_DATA.v"}}}
  }
],
{multi: true})

查看它在playground example上的工作方式

EDIT:

db.collection.aggregate([
  {$project: {GENUS_DATA: {$objectToArray: "$GENUS_DATA"}}},
  {
    $project: {
      GENUS_DATA: {
        $map: {
          input: "$GENUS_DATA",
          as: "item",
          in: {"File-Name": "$$item.k", met: {$objectToArray: "$$item.v"}}
        }
      }
    }
  },
  {
    $project: {
      GENUS_DATA: {
        $map: {
          input: "$GENUS_DATA",
          as: "file",
          in: {"File-Name": "$$file.File-Name",
            met: {
              $map: {
                input: "$$file.met",
                as: "met",
                in: {"METNO": "$$met.k", data: "$$met.v"}
              }
            }
          }
        }
      }
    }
  }
])

查看它在playground example - generic multi keys上的工作方式

Mongodb相关问答推荐

MongoDB聚合 - 用另一个数组过滤数组

更新文档中的数组时,如何在 MongoDB 和 C# 中使用 $push 更新修饰符

如何根据_id删除文档?

如何在 mongodb 中设置整数的默认值?

如何使用 Spring Data MongoDB 通过 GridFS ObjectId 获取二进制流

如何使用 mongoexport 导出排序数据?

Spring Mongo 条件查询两次相同的字段

try 解析序列化 JSON 字符串时处理 MongoDB 的 ISODate()

适用于 Windows 10 64 位的 MongoDB 下载

如何使用 angular.js 推送通知?

MongoDb:如何将附加对象插入对象集合?

MongoDB count() 未定义

如何在第一个文档中恢复 MongoDB ChangeStream 而不仅仅是在我开始收听后更改

处理Mongodb连接的正确方法是什么?

brew install mongodb 错误:Cowardly refusing to `sudo brew install' Mac OSX Lion

按 id 删除记录?

MongoDB Compass:select distinct field values

如何在mongodb中导入json文件?

MongoDB 如何在一个集合中排序他们的文档?

循环遍历所有 Mongo 集合并执行查询