我从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 })
什么是有效的方法?我应该在存储每个对象之前先要求它,还是有处理该对象的方法?
答案 0 :(得分:1)
默认情况下,insertMany
将在发生第一个错误时停止插入(在这种情况下为E11000 duplicate key error
)。您可以通过将ordered
参数设置为false
来更改该行为。在这种情况下,您将从失败的插入中获取错误列表,但是所有有效文档都会被成功插入:
db.sold.insertMany(sold, { ordered: false })
docs示例here