Arrays 将嵌入文档移动到同一父文档Mongo中的数组

Arrays 将嵌入文档移动到同一父文档Mongo中的数组,arrays,json,mongodb,Arrays,Json,Mongodb,我有一个Mongo集合,其对象结构如下: { id: , ... events: [{},{},{} ...] ... runtime: { field1: Date, field2: Date, field3: boolean } } 当查询某个路由时,我希望获取运行时嵌入对象的field1和field2,并将它们作为条目插入到事件数组中。也就是说,事件数组的成员如下所示: { field1: Date, field2: Date }

我有一个Mongo集合,其对象结构如下:

{
  id: ,
  ...
  events: [{},{},{} ...]
  ...
  runtime: {
    field1: Date,
    field2: Date,
    field3: boolean
  }
}
当查询某个路由时,我希望获取运行时嵌入对象的field1和field2,并将它们作为条目插入到事件数组中。也就是说,事件数组的成员如下所示:

{
  field1: Date,
  field2: Date
}

我该怎么做?我一直在查看操作员,但不确定它是否适合此项工作。

据我所知,您可以执行以下操作:

db.col.update( {{u id:id}, {$set: {$push:{事件: { 字段1:日期, 字段2:日期 } } } } )

注意

您必须使用$set,否则更新操作将导致删除其他参数。然后你像那样把A推到B

{$push:{B:A} 然后A是,{field1:Date,field2:Date},B是事件

编辑

使用它可以使用自己的值更新文档。 db.col.find().snapshot().forEach(函数(ele){ db.col.update( {{u id:id}, {$set: {$push:{事件: { field1:ele.runtime.field1, 字段2:ele.runtime.field2 } } } }


})是的,但是
push
命令如何知道从何处获取field1和field2?我不是在尝试推送我动态创建的field1和field2。相反,在执行路由时,这些字段已经存在。执行后,我想将这些字段移动或复制到事件数组中。