我正在使用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",
}
答案 0 :(得分:0)
由于您的查询的匹配部分,您的更新无效:
{ "_id": "5a95a1c32a2e2e0025e6d6e2" }
即搜索带有字符串 _id
的文档。您必须转换为ObjectId才能找到匹配的文档并执行更新。
{ "_id" : ObjectId("5a95a1c32a2e2e0025e6d6e2") }
另外请务必加入from pymongo import ObjectId
。
答案 1 :(得分:0)
使用update_many
更新多个文档。如果要更新一个文档,请使用update_one
。
实际上{@ 1}}已被弃用。
update
我希望它有所帮助。