使用MongoDB和Meteor中的多个文档更改集合中的名称

时间:2016-01-25 15:37:39

标签: mongodb meteor

如果我有一个包含多个文档的集合,例如:

{ FullName: "Jane Doe", Camp: "may12", Week1: "0", Week2: "1", Week3: "0" }
{ FullName: "Jane Doe", Camp: "may13", Week1: "0", Week2: "0", Week3: "1" }
{ FullName: "Jane Doe", Camp: "may14", Week1: "0", Week2: "1", Week3: "0" }

我需要将她的名字更新为" Jane Smith",我从一个会话中得到她的名字:

var nameAddressFullName = Session.get('clientName');

将所有带有她名字的文件放入一个数组中:

var documentNameAddressP = Programs.find({ FullName: nameAddressFullName}).fetch();

然后尝试更新所有名称(我只需要根据_id值更新),我需要这样的东西:

Programs.update({ _id: {$in: {documentNameAddressP._id}}, {$set: {FullName: nameChange}}); //????

我们需要将所有Jane Doe的文档更新为全名Jane Smith,以保持所有其他属性的完整性。

2 个答案:

答案 0 :(得分:1)

如果您通过对服务器的方法调用进行此更新,那么您可以在更新查询中使用{multi: true}一次性批量更新所有文档。

从客户端,您可以轻松地迭代光标:

Programs.find({ FullName: nameAddressFullName}).forEach(function(doc){
  Programs.update({ _id: doc._id },{ $set: { FullName: nameChange }});
});

答案 1 :(得分:0)

您可以在更新查询中选择要更新的元素:

Programs.update({FullName: nameAddressFullName},{$set: {FullName: nameChange}}) 

https://docs.mongodb.org/manual/reference/operator/update/set/