簡體   English   中英

db.collection.update $ set不起作用

[英]db.collection.update $set is not working

我正在使用gv3.6.2 mongo db,並使用$ set更新一個字段,但它不起作用並且對為什么一無所知?

from pymongo import MongoClient . 
from bson import ObjectId
import os,pymongo
dbuser = os.environ.get('user', '')
dbpass = os.environ.get('pwd', '')
uri = 'mongodb://{dbuser}:{dbpass}@machineip/data'.format(**locals())
client = MongoClient(uri)
db = client.data
collection = db['test']
print db.version
db.collection.update(
                    { "_id" : ObjectId("5a95a1c32a2e2e0025e6d6e2") },
                        { "$set": 
                            {
                                "status": "submission"
                            }
                    }
                )

Document:

{
    "_id" : ObjectId("5a95a1c32a2e2e0025e6d6e2"),
    "status" : "Submitting",
    "endRev" : "9531c3448d3f7713dc74c4b05d177ecf0c6e4df6",
    "chip" : "4364",
}

在此處輸入圖片說明

由於查詢的匹配部分,您的更新無法正常進行:

{ "_id": "5a95a1c32a2e2e0025e6d6e2" }

那就是在搜索帶有字符串 _id的文檔。 您必須強制轉換為ObjectId才能找到匹配的文檔並執行更新。

{ "_id" : ObjectId("5a95a1c32a2e2e0025e6d6e2") }

還請確保包含from pymongo import ObjectId

使用update_many更新多個文檔。 如果要更新一個文檔,請使用update_one 實際上不建議使用update

from bson import ObjectId
db.collection.update_many({"_id" : ObjectId("5a95a1c32a2e2e0025e6d6e2")}, {"status": "submission"})

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM