除非已插入文档,否则将它们插入收藏集吗?

时间:2018-11-10 20:11:54

标签: 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 })

什么是有效的方法?我应该在存储每个对象之前先要求它,还是有处理该对象的方法?

1 个答案:

答案 0 :(得分:1)

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

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

docs示例here