如果你在 pymono 中 insert_one 时我有相同 _id 的数据,我该如何更新它?

If i have data with the same _id when you insert_one in pymono, how do i update it?

我刚开始使用pymongo。然后,我创建了一个 for 循环以将数据插入 MongoDB。 但是当插入的数据和已有的MongoDB中的数据是同一个ID时, 我想更新现有 MongoDB 中的数据。 我不知道该怎么做。

#in mongoDB
collection = [
    {"_id" : 1234 ,
     "like" : ["dog"]
    }, ... 
]

#in python
data = [
   { "_id" : 1234 ,
     "like" : ["cat"]
   }, ...
]

client = pymongo.MongoClient(host)
db = client[collection_name]
col = db[documents_name]


for i in data:
    col.insert_one(data)
    
# result in mongoDB
collection = [
    {"_id" : 1234 ,
     "like" : ["dog","cat"]
    }, ... 
]

MongoDB 插入带有 ObjectID 的对象,它成为插入文档的主要标识。这通常是在服务器中自动生成以保持唯一性。

如果你想插入你自己的自定义ObjectId(不推荐),那么你需要在bson包中传递带有objectid引用的数据,而不是纯字符串。喜欢

{"_id":ObjectId("..."), ..}

是的,您需要更新(如果存在),因为您需要使用 upsert 版本而不是插入版本。