Node.js 如何从数组中高效地批量插入和更新mongodb文档值?
我有一个标签集合,其中包含以下结构的文档:Node.js 如何从数组中高效地批量插入和更新mongodb文档值?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个标签集合,其中包含以下结构的文档: { 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"]}},
{
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一起使用,使用mongoose/Node mongo native的解决方案很好,但不是必需的)
提前感谢同时使用
upsert
和$in
操作符的概念是不一致的。这根本不起作用,因为在中,如果*any*插入,则向上插入;在
中,如果*none*插入,则向上插入
在本例中,MongoDB正在执行您不希望它执行的版本。但你不能让它改变你的行为
我建议简单地通过循环标记数组发出三次连续写入。我知道这很烦人,而且它有一股糟糕的代码味道,但MongoDB就是这样工作的。这个循环真的很糟糕。。。我使用的是未编译的python,循环会大大降低我的代码速度,因为我经常需要更新一长串文档。我正在探索其他基于文档的数据库,看看是否能找到更好的。