我有大量的记录要迭代(来自外部数据源),然后插入mongo db。
我不想允许重复。如何以不影响性能的方式完成此任务。
记录数量约为200万。
答案 0 :(得分:1)
我可以想到在mongodb中有两种相当直接的方法,尽管很大程度上取决于你的用例。
一,您可以使用upsert:true选项进行更新,使用您定义的唯一键作为更新查询。如果它不存在,它将插入它,否则它将更新它。
http://docs.mongodb.org/manual/reference/method/db.collection.update/
二,你可以在该密钥上创建一个唯一索引,然后插入忽略生成的错误。具体如何做到这将取决于与mongodb版本一起使用的语言和驱动程序。执行批量插入时,这可能会更快,但是YMMV。
答案 1 :(得分:0)
200万不是一个会影响性能的巨大数字,将您的记录字段拆分为不同的集合就足够了。
我建议在插入mongodb之前在您的唯一键上创建一个唯一索引。 唯一索引将过滤冗余数据并丢失一些记录,您可以忽略该错误。