我使用InsertOne()进行批量插入。
user1 = InsertOne({"user_id": 1})
user2 = InsertOne({"user_id": 2})
collection.bulk_write([user1, user2])
如果集合中已经存在user_id = 1
,则会引发batch op errors occurred
错误。
我想知道是否有什么方法可以仅在数据不存在时插入?
(由于我正在使用bulk_write
,因此无法使用获取数据并比较是否存在数据)
答案 0 :(得分:1)
您可以做的是:将ReplaceOne
与upsert:true
一起使用。这样,如果文档已经存在,更新将不会起作用,如果文档不存在,它将创建新文档。
尝试一下:
user1 = ReplaceOne({"user_id": 1},{"user_id": 1},upsert = True)
user2 = ReplaceOne({"user_id": 2},{"user_id": 2},upsert = True)
collection.bulk_write([user1, user2])
确保在User
的第二个参数中传递所有需要存储在ReplaceOne
文档中的数据