db.collection.update $ set无效

时间:2018-03-23 04:50:17

标签: python mongodb

我正在使用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",
}

enter image description here

2 个答案:

答案 0 :(得分:0)

由于您的查询的匹配部分,您的更新无效:

{ "_id": "5a95a1c32a2e2e0025e6d6e2" }

即搜索带有字符串 _id的文档。您必须转换为ObjectId才能找到匹配的文档并执行更新。

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

另外请务必加入from pymongo import ObjectId

答案 1 :(得分:0)

使用update_many更新多个文档。如果要更新一个文档,请使用update_one。 实际上{@ 1}}已被弃用。

update

我希望它有所帮助。