我有一个较小的(~100)小数据文件(每个可能有10个字段)插入到MongoDB中.但是它们中的许多(可能全部,但通常是80%左右)已经存在于DB中.这些文件代表了未来几个月即将发生的事件,我每隔几天就会更新一次数据库.因此大多数事件已经在那里.
任何人都知道(或想猜)是否更有效:
进行批量更新但是使用continueOnError = true,例如
db.collection.insert(myArray, {continueOnError: true}, callback)
单独插入,首先检查_ID是否存在?
首先做一个大的删除(类似db.collection.delete({_id: $in : [array of all the IDs in my new documents] })
,然后批量插入?
我可能会做#1,因为那是最简单的,我不认为100个文件都那么大所以它可能无关紧要,但如果有10,000个文件?我正在使用node.js驱动程序在JavaScript中执行此操作.我的背景是在Java中,异常是耗时的,这是我要问的主要原因 - "continueOnError"选项是否耗时?
补充:我不认为"upsert"是有道理的.这是为了更新单个文档.就我而言,代表即将发生的事件的单个文档没有改变.(好吧,也许是,这是另一个问题)
发生的事情是会添加一些新文件.