用于更新子文档的pymongo语法

时间:2012-12-15 18:05:26

标签: mongodb pymongo

我的文件如下:

{
  a: "..."
  subdocs [
    {
      l: "..."
      m: "..."
      n: 0
    },
    {
      l: "..."
      m: "..."
      n: 0
    }

  }
}

我必须使用pymongo更新特定子目录中的'n'字段。我有文档和子文档的索引,所以我可以像这样

获取子文件
subdoc = mydoc['subdocs'][index]

我尝试通过pymongo进行更新

coll.update( { mydoc['subdocs'][index] : subdoc }, { "$inc": { n: 1 }} )

我得到了这个例外

<type 'exceptions.TypeError'>

我已经尝试了几种变体,无法正确使用pymongo语法。我认为我的查询文档不正确。 pymongo对这种语法有什么期望?

1 个答案:

答案 0 :(得分:1)

您需要使用点符号标识要在update的第二个参数中更新的数组元素,如下所示:

coll.update({'_id': mydoc['_id']}, {'$inc': {'subdocs.' + str(index) + '.n': 1}})