[英]Meteor/Mongo: Finding and updating certain elements in a collection
我从Meteor开始,需要一些Mongo的帮助。 我有一组名称,我正在列表中显示,并希望能够根据其他条件更新数据库中某些条目的一个变量。 基本上我想做的是:
对于特征A =真且B =真的每个条目,将特征C改变为假。
到目前为止,我一直在试图弄清楚Mongo如何处理集合元素的“for each”循环,并且每个元素检查条件A和B是否成立,然后是collection.update(element,{C :false})。 事实证明这比我想象的要多得多。 我想做这样的事情(使用虚拟变量名称):
for (i = 0; i < collection.find().count(); i++){
if (collection[i].A===true && collection[i].B===true)
collection.update(collection[i], {$set: {C: false}});
};
我一直在改变这个基本代码,但我开始意识到我缺少一些关于索引/ Mongo如何在集合中工作的基本知识。 你可以像这样索引一个集合(如果是这样,这甚至是我做我想做的最方便的方式吗?)?
当然,我想知道如何在发布后立即执行此操作,当然,这是在Meteor文档中建议的!
当然,这是一个简单的解决方案:
collection.update({A: true, B: true}, {$set: {C:false}});
正如评论中已经建议的那样,正确的答案是:
collection.update({A: true, B: true}, {$set: {C:false}}, {multi: true});
(至少在纯MongoDB中, 请参见 )。
如果没有multi: true
,它将只更改一个符合条件的文档。
在Meteor中它有点棘手,因为除了匹配它之外你不允许进行客户端更新(因此不可能有各种标准,不可能有multi
),请参阅http://docs.meteor.com/ #update 。
您可以迭代所有查找,但最好运行此类代码服务器端。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.