[英]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.