如果我有一个包含多个文档的集合,例如:
{ 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,以保持所有其他属性的完整性。
答案 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/