如何在不更改 pymongo 中的 id 的情况下更新整个对象?
how to update entire object without changing the id in pymongo?
我正在尝试更新存储在 MongoDB 中的 record/object 的所有属性,现在我正在尝试这样做。
- 已删除对象,但保留被删除对象的 ID。
- 使用我删除的相同 ID 创建一个新对象。
是否正确?或者他们在 objective 上面使用 pymongo
做什么?
mongo_object = {
_id : 123,
prop_key_1: some_value,
// ... many present
prop_key_n: some_value,
}
def delete(record):
doc = get_db().reviews.delete_many({"id" : record["_id"]})
print(doc.deleted_count)
# all key values are changed, mongo_object is changed except the id.
delete(mongo_object)
db.collection_name.insert_one(mongo_object)
但是上面的代码并没有删除对象,doc.deleted_count
是0。
from bson.objectid import ObjectId
def replace_one(record):
result = client.test_db.test_collection.replace_one({"_id":ObjectId(record["_id"])}, record,upsert=True)
print(result.matched_count)
What is the correct way to query MongoDB for _id using string by using Python?
Pymongo 文档 - http://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.replace_one
db.collection_name.update_one({"_id" : record["_id"]}, new_data}
只需使用不带 $set 的更新,文档将在不更改 _id 的情况下被完全替换
我正在尝试更新存储在 MongoDB 中的 record/object 的所有属性,现在我正在尝试这样做。
- 已删除对象,但保留被删除对象的 ID。
- 使用我删除的相同 ID 创建一个新对象。
是否正确?或者他们在 objective 上面使用 pymongo
做什么?
mongo_object = {
_id : 123,
prop_key_1: some_value,
// ... many present
prop_key_n: some_value,
}
def delete(record):
doc = get_db().reviews.delete_many({"id" : record["_id"]})
print(doc.deleted_count)
# all key values are changed, mongo_object is changed except the id.
delete(mongo_object)
db.collection_name.insert_one(mongo_object)
但是上面的代码并没有删除对象,doc.deleted_count
是0。
from bson.objectid import ObjectId
def replace_one(record):
result = client.test_db.test_collection.replace_one({"_id":ObjectId(record["_id"])}, record,upsert=True)
print(result.matched_count)
What is the correct way to query MongoDB for _id using string by using Python?
Pymongo 文档 - http://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.replace_one
db.collection_name.update_one({"_id" : record["_id"]}, new_data}
只需使用不带 $set 的更新,文档将在不更改 _id 的情况下被完全替换