【问题标题】:can't add properties to object returned from mongo in python无法在 python 中向从 mongo 返回的对象添加属性
【发布时间】:2016-07-16 19:38:00
【问题描述】:

我正在使用 Python 从 Mongo 获取数据。我将所有文档从光标移动到一个数组中。然后我处理文档并尝试向对象/字典添加一些新属性,但它显示 KeyError。当我尝试修改 mongo 返回的对象时,我在 Nodejs 中看到了这种行为,解决方案是 query.lean().exec() 来获取普通对象。 pymongo 有等价物吗?

【问题讨论】:

  • 你使用了nontree风格,所以mongo > dump > change >update因为不可能mongo-hash to mongo-hash(mongo-hash)!如果您的更新包含另一个 query filter,您就会遇到大问题。检查这个:stackoverflow.com/questions/18363472/…
  • 我不明白。我进行了查询并获得了数据。现在我试图在我的程序中操纵它。我还没有更新数据库本身(还)。
  • jsonID一起工作,所以定义任何_iddocs.mongodb.com/manual/reference/method/db.collection.update@user137717

标签: python mongodb pymongo


【解决方案1】:

在字典上设置新键时不会引发 KeyError。表示你做错了什么。

查看何时引发 KeyError:https://stackoverflow.com/a/10116540/4273834

回顾一下:如果您尝试 SET 键,但如果您尝试 GET 不存在的键的值,则不会引发 KeyError。

这是一个有效的代码 sn-p:

cursor = col.find({})
my_list = list(cursor)
my_list[0]['added_field'] = 'whatever'

附注:list(cursor) 不是在 python 中处理数据的方式。推荐的方法是直接循环游标(除非有一些特定的原因有一个列表......):

for doc in cursor:
    doc['new_key'] = 'test'
    do_whatever_you_want_with_the_doc(doc)

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 2016-04-05
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2014-03-15
    • 2016-03-20
    相关资源
    最近更新 更多