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次のようなドット表記を使用するには、2番目のパラメーターで更新する配列要素を特定する必要があります。

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