根据这个高度不完整的清单http://www.mongodb.org/about/contributors/error-codes/,它们都与重复密钥相关.但我无法得到11001错误.以下所有都引发了11000错误:
_id已存在的文档因此,这完全违背了链接页面,其中11000表示_id更新(而不是插入)将发生11001.
所以我的问题是:11001何时发生?
我正在使用NodeJS和MongoDB和Express.我需要将记录插入到必须包含电子邮件字段的集合中.我正在使用insertMany函数来插入记录.插入唯一的电子邮件时,它可以正常工作,但是当输入重复的电子邮件时,操作会突然中断.
我尝试使用try catch打印错误消息,但插入重复的电子邮件后执行失败.我希望执行继续并存储重复项.我想获得插入/失败的记录的最终列表.
错误信息:
Unhandled rejection MongoError: E11000 duplicate key error collection: testingdb.gamers index: email_1 dup key:
Run Code Online (Sandbox Code Playgroud)
有没有办法处理错误或除了insertMany还有其他方法吗?
更新:
电子邮件是我收藏中的一个独特字段.
如果我还需要在MongoDB中插入文档
db_stock.update_one(document, {'$set': document}, upsert=True)
Run Code Online (Sandbox Code Playgroud)
.会做的工作(如果我错了,请随时纠正我)
但是,如果我有一份文件清单并希望将它们全部插入,那么最好的方法是什么呢?
这个问题有一个单一记录版本,但我需要它的大量版本,所以它是不同的.
让我重新提出我的问题.我有数百万个文档,其中很少可以存储.如何在几秒钟内将其余的存储在MongoDB中,而不是几分钟/小时?
biglist =
[
{'title':'U2 Band','link':'u2.com'},
{'title':'ABC Station','link':'abc.com'},
{'title':'Live Concert by U2','link':'u2.com'}
]
Run Code Online (Sandbox Code Playgroud)
我想删除列表中的THIRD元素...因为它有"u2.com"作为副本.我不想要重复的"链接"元素.执行此操作的最有效代码是什么,以便产生以下结果:
biglist =
[
{'title':'U2','link':'u2.com'},
{'title':'ABC','link':'abc.com'}
]
Run Code Online (Sandbox Code Playgroud)
我尝试了很多方法,包括使用许多嵌套的"for ... in ...."但这种效率非常低且太长.