I have multiple documents of below structure.

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

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

I want to replace File_6489248.ZLM and File_12345.ZLM with name "File-Name" AS KEY dynamically in mongo-Db remember there will be n number of records so defining only the above 2 values will not work.

推荐答案

One option is to use $objectToArray with update pipeline:

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})

See how it works on the playground example

EDIT: If you consider each dictionary here can have several keys and you want all keys to be generic (as they should), you can use $map as each key can contain array of items:

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"}
              }
            }
          }
        }
      }
    }
  }
])

See how it works on the playground example - generic multi keys

Mongodb相关问答推荐

MongoDB$unionWith,如何 Select 特定文档

Go mongo-驱动程序测试,FindOne未根据给定的筛选器返回正确结果

MongoDB/Mongoose查询:使用优先约束检索从位置A到位置B的路径

如何在Mongodb Mongoose Nodejs中提取不等于一组值的字段

无法配置数据源:未指定url属性,无法为 MongoDb 配置嵌入数据源

使用mongo'db.Decode(&dto)映射一个嵌套的 struct

对 MongoDB 集合中的对象数组进行排序

找到一个用户,然后使用 MongoDB 根据他们的总分获得他们的排名

$lookup 的参数必须是字符串

GeoJSON 和 MongoDB:将点存储为 GeoJSON.Point 是否值得?

mongodump 是否锁定数据库?

如何使用 -number 后缀对字符串进行 MongoDB 查询排序?

如何在任意深度查找 MongoDB 字段名称

MongoDB 批处理操作的最大大小是多少?

在 MongoDB 中按条件分组

Mongo按实际上是数字的字符串值排序

如何在 MongoDB 的 $match 中使用聚合运算符(例如 $year 或 $dayOfMonth)?

从 mongo 结果中删除 _id

120 个 mongodb 集合与单个集合 - 哪个更有效?

试图从 mongoose 获取Collection 列表