Arrays 将嵌入文档移动到同一父文档Mongo中的数组
我有一个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 }
{
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。相反,在执行路由时,这些字段已经存在。执行后,我想将这些字段移动或复制到事件数组中。