0

我有一个集合,其中包含许多包含太多字段的文档,但我想在名为 Data 的新字段中收集许多这些字段,这是一个示例

{
 "_id" : ObjectId("***********"),
  "name" : "1234567890",
  "mobile" : "Test",
.
.
.
.
.
etc
}

我想使用 updateMany 使集合中的所有文档看起来像这样

{
     "_id" : ObjectId("***********"),
      "name" : "1234567890",
      "mobile" : "Test",
"Data":{
    .
    .
    .
    .
    .
    etc
}
    }
4

1 回答 1

0

选项1(很少嵌套字段):您可以通过以下方式进行:

db.collection.update({},
[
  {
   $project: {
     data: {
      name: "$name",
      mobile: "$mobile"
      }
    }
 }
],
{
  multi: true
})

游乐场1

方案二:(如果需要嵌套的字段太多):

 db.collection.update({},
 [
  {
   $project: {
    data: "$$ROOT",
    name: 1,
    mobile: 1
 }
 },
 {
  $unset: [
   "data.name",
   "data.mobile"
 ]
 }
],
{
  multi: true
})

游乐场2

于 2022-03-04T18:56:26.677 回答