簡體   English   中英

如何有效地從數組中批量插入和更新mongodb文檔值?

[英]How to efficiently bulk insert and update mongodb document values from an array?

我有一個標簽集合,其中包含以下結構的文檔:

{
  word:"movie", //tag word
  count:1        //count of times tag word has been used
}

我得到了一個需要在標簽集合中添加/更新的新標簽數組:

["music","movie","book"]

我可以使用以下查詢來更新標簽集合中當前存在的所有標簽的計數:

db.Tags.update({word:{$in:["music","movies","books"]}}, {$inc:{count:1}}), true, true);

盡管這是一種有效的更新策略,但我無法看到在集合中找不到哪些標記值,並且將upsert標志設置為true不會為未找到的標記創建新文檔。

在這里,我應該如何處理將“新”值批量插入“標簽”集合中的問題? 還有什么其他方法可以更好地利用更新,以便它可以向上插入新標記值?

(注意:我將Node.js與貓鼬一起使用,使用mongoose / node-mongo-native的解決方案會很好,但不是必須的)

提前謝謝

同時使用upsert$in運算符的概念並不統一。 這根本就行不通,因為upsert if *any* in upsert if *none* inupsert if *none* in之間沒有區別。

在這種情況下,MongoDB正在執行您不希望使用的版本。 但是您不能使其改變行為。

我建議通過遍歷標簽數組簡單地發出三個連續的寫操作。 我知道那很煩人,並且有不好的代碼味道,但這就是MongoDB的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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