我从 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/