我正在开发一个项目,我正在尝试使用MongoDB的Node.js上的本机驱动程序进行批量写入。我需要定期更新/插入几百个文档,但操作不是更新/插入所有文档。即使在一个空的集合中,我只能从大约230个左右插入130-180个文档。以下是我的代码:
const documents = [ /* Array of ~210 objects */ ]
const bulkUpdate = db.collection('notes').initializeUnorderedBulkOp()
documents.forEach(document => {
bulkUpdate
.find({ name: document.name })
.upsert()
.updateOne({
$set: {
message: document.message,
lastModified: new Date()
},
$setOnInsert: {
name: document.name,
dateCreated: new Date()
}
})
}
bulkUpdate.execute()
.then(results => {
console.log(results.nUpserted, results.nMatched, results.nModified)
}
.catch(error => {
console.error('Error updating 'notes' collection.)
}
当我在集合不存在时运行它时,我得到的结果是:168 45 45
。当集合在开始时甚至不存在时,如何匹配45个文档并进行修改(但是,它们不在集合中)?并且只插入了213个文件。
此时,我已经尝试了一切,并在各处搜索。我已尝试同时使用initializeUnorderedBulkOp()
和initializeOrderedBulkOp()
,我也尝试删除name
字段上的唯一索引。我也尝试过bulkUpdate.execute({ j: 1 })
写作关注但仍然没有。
如果有人能对这件事情有所了解,我会非常感激。
谢谢!
编辑:忘记提及我使用的是沙盒mLab托管的MongoDB。