MongoDB:哪个更快:findOne +如果不存在insert或upsert?

时间:2014-09-29 00:47:06

标签: node.js mongodb

我想检查一下集合中是否存在2000个URL,并将那些尚未存在的URL和一些其他字段作为新文档插入。我只需要更新已存在的时间戳字段。通常新的会少一些。

目前我在async.each()中循环并为每个执行upsert并在响应中使用updatedExisting字段来查看URL是否为新的。但也许我应该做findOne并插入或更新。另一种选择是在async.each中进行批量查找并对现有的进行更新,并为新的批量插入执行批量插入。请指教!谢谢。

1 个答案:

答案 0 :(得分:0)

好的,我觉得upsert在你的情况下效果很好看看这个页面:Mongo Bulk Upsert

这是一个如何运作的简单示例:

bulk.find( { item: "abc123" } ).upsert().replaceOne(
   {
     item: "abc123",
     status: "P",
     points: 100,
   }
);
bulk.execute();

我希望有所帮助。