3

我正在尝试更新存储在 MongoDB 中的记录/对象的所有属性,现在我正在尝试这样做。

  1. 已删除对象,但保留被删除对象的 ID。
  2. 创建一个与我已删除的 ID 相同的新对象。

这是对的吗 ?或者他们在目标之上做什么 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。

4

2 回答 2

2
db.collection_name.update_one({"_id" : record["_id"]}, new_data}

只需在没有 $set 的情况下使用 update ,文档将被完全替换而不更改 _id

于 2017-11-24T07:43:47.500 回答
1

在此处输入图像描述

 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)

使用 Python 使用字符串查询 MongoDB 以获取 _id 的正确方法是什么?

Pymongo 文档 - http://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.Collection.replace_one

于 2017-11-24T04:33:06.380 回答