无法更新pymongo中现有文档中的字段

时间:2014-12-05 04:23:35

标签: python mongodb pymongo

我正在尝试使用pymongo将字段添加到现有文档中。

这是我的代码:

from pymongo import MongoClient

client = MongoClient()
db = client['profiles']
collection = db['collection']


def createFields():
    collection.update({'_id' : '547f21f450c19fca35de53cd'}, {'$set': {'new_field':1}})

createFields()

当我在mongoDB解释器中输入以下内容时

>use profiles
>db.collection.find()

我可以看到指定的文档中没有添加任何字段。

2 个答案:

答案 0 :(得分:1)

_id字段最常见的是ObjectId()类型,它是一个12字节的值,而不是你在这里提供的24字节字符串。

您必须使用正确的类型才能匹配文档。

答案 1 :(得分:0)

您应该在脚本

之前添加db

试试这个,它适用于我

在Mongo CLI中

> use profiles
> db.collection.insertOne({'_id': '547f21f450c19fca35de53cd'})
> db.collection.find()
{ "_id" : "547f21f450c19fca35de53cd" }

Python脚本 - > test.py

from pymongo import MongoClient
client = MongoClient()
db = client['profiles']
collection = db['collection']

def createFields():
    db.collection.update({'_id' : '547f21f450c19fca35de53cd'}, {'$set': {'new_field':-881}})

createFields()

命令行

> python test.py

Mongo CLI

> use profiles
> db.collection.find()
> { "_id" : "547f21f450c19fca35de53cd", "new_field" : -881 }
  

对于pymongo,请使用update_oneupdate_many代替update