1

我的文件如下所示:

{
  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 对这种语法有什么期望?

4

1 回答 1

1

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

coll.update({'_id': mydoc['_id']}, {'$inc': {'subdocs.' + str(index) + '.n': 1}})
于 2012-12-15T19:17:08.350 回答