Nic*_*ull 6 javascript insert mongodb
我有一个 Mongo 集合,我试图将多个文档插入其中,如下所示:
db.collection('properties').insertMany(docs)
.catch(err => console.log(err))
.then((err, result) => {
console.log(err);
console.log(docs);
console.log(result);
//if (err) console.log(err);
//else if (callback) callback();
});
Run Code Online (Sandbox Code Playgroud)
这总是返回以下错误:
{ [MongoError: insertDocument :: caused by :: 11000
E11000 duplicate key error index: properties.properties.$_id_
dup key: { : ObjectId('591bbecdf9d86c59eea1047c') }]
Run Code Online (Sandbox Code Playgroud)
数组中的所有对象最初都没有_id属性。然而,console.log(docs)之后的节目:
{ url: '/property/z37717098',
thumbnailUrl: 'https://li...2e175fca56f08ceb6ffab5_354_255.jpg',
lat: '50.81647',
lng: '-1.085111',
dateAdded: '30/07/2015',
images:
[ 'https://li.zoocdn...b2e175fca56f08ceb6ffab5_645_430.jpg',
'https://li.zoocdn...c2e77d50e653300e5d21358d4f9825_645_430.jpg',
'https://li.zoocdn...523163e4684226420bb4c167d90666_645_430.jpg',
'https://li.zoocdn...e008165a61d9154a7a59c881_645_430.jpg',
'https://li.zoocd...218736df8f964745602744f7c_645_430.jpg',
'https://li.zoo...ad5a98ed2ffe78322c2_645_430.jpg',
'https://li.zooc...efe4a54042ff76690_645_430.jpg',
'https://li.zoocd...6813d439a1740f42e_645_430.jpg',
'https://li.zooc...c2b38417154aeba6c28cbd_645_430.jpg' ],
_id: 591bbecdf9d86c59eea1047c },
Run Code Online (Sandbox Code Playgroud)
果然,数组中的所有对象现在都有一个_id属性,每个对象都有一个重复的值。
编辑:我还应该提到数组中的第一个对象被插入到集合中,并且它的_id属性具有相同的值,因为重复的错误消息显示为冲突。这意味着对我来说,该insertMany函数正在为对象提供相同的ObjectId.
这是怎么回事?为什么会insertMany生成一大堆重复ObjectId的,这显然会导致插入失败?
小智 3
我也遇到了同样的问题insertMany()。我无法确定根本原因。就我而言,我循环遍历包含对象(文档)的数组,然后批量插入它们。一次可以处理几百到几千条记录。
在我的阅读中,我猜测它与 driver\xe2\x80\x94 有关,因为最终它是_id在插入之前为您添加字段的内容。不过,我并没有花太多时间来深入研究这一点。
再说一次,根据我的经验,我总是会犯错误E11000 duplicate key。因此,作为一种解决方法,我最终以编程方式创建了自己的_id字段。这完全取决于您想要如何实现它。
就我而言,我刚刚导入了 uuid 库:
\n\nnpm install uuid\nRun Code Online (Sandbox Code Playgroud)\n\n然后我循环了所有文档,并附加了 uuid。
\n\ndocuments.forEach(doc => doc._id = uuidv1())\nRun Code Online (Sandbox Code Playgroud)\n\n希望有帮助!
\n| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |