javascript - 除非已经插入文档,否则将文档插入集合中?

标签 javascript node.js mongodb ecmascript-6

我从 API 获取对象列表:

let sold = [
 {  objId: 3240747,
    soldDate: '2018-09-27',
    soldPrice: 4610000,
    apartmentNumber: '1202',
    soldPriceSource: 'bid',
  },
  { objId: 3234263,
    soldDate: '2018-09-24',
    soldPrice: 2580000,
    soldPriceSource: 'bid',
  }
...
]

我将这些存储在一个集合中:

soldCollection.insertMany(sold)

有些对象之前已经取回过,我只想存一次数据库中没有的。

 dbo.collection("sold").createIndex({ "objId": 1 }, { unique: true })

执行此操作的有效方法是什么?我应该在存储每个对象之前询问它还是有处理这个问题的方法?

最佳答案

默认情况下,insertMany 将在第一个错误发生时停止插入(在本例中为 E11000 重复键错误)。您可以通过将 ordered 参数设置为 false 来更改该行为。在这种情况下,您将获得失败插入的错误列表,但所有有效文档都将成功插入:

db.sold.insertMany(sold, { ordered: false })

文档示例 here

关于javascript - 除非已经插入文档,否则将文档插入集合中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53243000/

相关文章:

javascript - 未检测到 Electron 和 vuejs 更改

node.js - 我可以使用带有扩展参数的dynamicHelpers (expressjs)吗?

MongoDB 投影是其他字段的 bool 值的结果

javascript - localStorage 无法在 JavaScript 中运行

javascript - 在打开和关闭列表之间切换

javascript - jQuery - 识别被点击的 td

node.js - NodeJS 管道损坏导致我的 Express api 停止工作

javascript - ui-router 嵌套状态不会加载

javascript - 如何使整个应用程序都可以访问一个文件的变量?

mongodb - 使用 mongodb 入侵数据库。有没有人遇到过这种情况?