簡體   English   中英

Meteor / Mongo:查找和更新集合中的某些元素

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM