Mongodb - 如果不存在则添加(非id字段)

时间:2014-04-25 23:07:38

标签: mongodb

我有大量的记录要迭代(来自外部数据源),然后插入mongo db。

我不想允许重复。如何以不影响性能的方式完成此任务。

记录数量约为200万。

2 个答案:

答案 0 :(得分:1)

我可以想到在mongodb中有两种相当直接的方法,尽管很大程度上取决于你的用例。

一,您可以使用upsert:true选项进行更新,使用您定义的唯一键作为更新查询。如果它不存在,它将插入它,否则它将更新它。

http://docs.mongodb.org/manual/reference/method/db.collection.update/

二,你可以在该密钥上创建一个唯一索引,然后插入忽略生成的错误。具体如何做到这将取决于与mongodb版本一起使用的语言和驱动程序。执行批量插入时,这可能会更快,但是YMMV。

答案 1 :(得分:0)

200万不是一个会影响性能的巨大数字,将您的记录字段拆分为不同的集合就足够了。

我建议在插入mongodb之前在您的唯一键上创建一个唯一索引。 唯一索引将过滤冗余数据并丢失一些记录,您可以忽略该错误。