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

时间:2016-08-23 18:19:19

标签: arrays json mongodb

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

{
  id: ,
  ...
  events: [{},{},{} ...]
  ...
  runtime: {
    field1: Date,
    field2: Date,
    field3: boolean
  }
}

当查询某个路由时,我想获取运行时嵌入对象的field1和field2,并将它们作为条目插入到events数组中。也就是说,events数组的成员看起来像:

{
  field1: Date,
  field2: Date
}

我该怎么做?我一直在关注push运算符,但我不确定它是否适合这项工作。

1 个答案:

答案 0 :(得分:1)

据我了解,您可以按照以下方式执行,

db.col.update(    {_id:id},    {$ set:      {$ push:{events:         {           field1:日期,           field2:日期         }                }      }    } )

注意

您必须使用$ set否则更新操作将导致其他参数被删除。而且你推动了A'到' B'那样,

{$ push:{B:A}}  那么A是,{field1:Date,field2:Date},B是事件。

修改

使用此选项可以使用自己的值更新文档。 db.col.find()。snapshot()。forEach(function(ele){  db.col.update(     {_id:id},     {$ set:       {$ push:{events:          {            field1:ele.runtime.field1,            field2:ele.runtime.field2          }                 }       }     }

});