pymongo仅插入不存在

时间:2019-06-20 03:51:46

标签: mongodb pymongo

我使用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,因此无法使用获取数据并比较是否存在数据)

1 个答案:

答案 0 :(得分:1)

您可以做的是:将ReplaceOneupsert: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文档中的数据