在mongo集合的所有文档中插入字段,其中新字段的值是同一文档的另一个字段的值

时间:2017-03-17 12:56:58

标签: mongodb mongodb-query

我的收藏看起来像这样: -

customer_collection: -

{"_id" : "507f191e810c19239de098db", "name" : "John", [other data]}
{"_id" : "507f191e810c19729de860ea", "name" : "Dave", [other data]}

我想在此集合的所有文档中添加另外两个字段 nickname surname (包含1000万个文档);在本文档中将这些字段的值设置为 name 的值,即更改的文档应如下所示: -

{"_id" : "507f191e810c19239de098db", "name" : "John", "nickname" : "John", "surname" : "John", [other data]}
{"_id" : "507f191e810c19729de860ea", "name" : "Dave", "nickname" : "Dave", "surname" : "Dave", [other data]}

我该怎么做?这样做的最佳策略是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码执行此操作

db.customer.find().forEach( function (doc) {
  doc.nickname = doc.name; 
  doc.surname = doc.name; 
  db.customer.save(doc); 
});

如果您使用的是MongoDB 3.4,则可以使用新的$ addFields聚合管道运算符。