使用 Pymongo 更新 Mongo 文档

Update Mongo Document with Pymongo

我想用 pymongo(版本 3.0.3)通过 ID 更新现有的 mongodb 文档。但是,我的 python 代码没有任何更新。有谁知道为什么..?

这是我想要 运行 的 mongodb 脚本,它在 mongo 客户端 Robomongo 上运行良好。

db.mycollection.update(
  { '_id': ObjectId("55d49338b9796c337c894df3") },
  { $set: { "details.model": "14Q22" } },
  upsert=false
  )

但是这个 python 代码不起作用。

client = pymongo.MongoClient("1.1.1.1", 27017)
db = client.mydb

db.mycollection.update(
  { '_id': "55d49338b9796c337c894df3" },
  { '$set': { "details.model": "14Q22" } },
  upsert=False
  )

它returns

{u'n': 0, u'nModified': 0, u'ok': 1, 'updatedExisting': False}

是的,您必须指定一个 ObjectId 实例,如下所示:

from bson.objectid import ObjectId
db.mycollection.update({'_id': ObjectId("55d49338b9796c337c894df3")},  {'$set': {"details.model": "14Q22"}}) 
  • 另请注意,mycollection.update 虽然有效,但已弃用 由于引入了新的 CRUD 操作,更好地使用 mycollection.update_onemycollection.find_one_and_update