Node.js Mongodb本机驱动程序 - 批量写入不更新/插入所有文档

时间:2018-03-12 02:14:01

标签: node.js mongodb mlab bulkupdate

我正在开发一个项目,我正在尝试使用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。

0 个答案:

没有答案