mongodb コレクション内に、次のような埋め込みドキュメントのリストを含むドキュメントがあります ( pymongo
withcol
のインスタンスとして使用pymongo.collection.Collection
):
In [1]: col.find_one({'reqid': 1})
Out[1]:
{u'_id': ObjectId('4fa3446f1d41c81bba000000'),
u'reports': [{u'comments': [u'A']},
{u'comments': [u'B']},
{u'comments': [u'A', u'B']},
{u'comments': [u'C']},
{u'comments': [u'A', u'B', u'C']}],
...} # Other fields
$set
1 回の更新comments
で、ドキュメント内のすべてを空のリストにリセットしたいと考えています。次のことを試しましたが、うまくいきません。
In [2]: col.update({'reqid': 1}, {'$set': {'reports.comments': []}})
In [3]: col.find_one({'reqid': 1}, {'reports.comments': 1})
Out[3]:
{u'_id': ObjectId('4fa3446f1d41c81bba000000'),
u'reports': [{u'comments': [u'A']},
{u'comments': [u'B']},
{u'comments': [u'A', u'B']},
{u'comments': [u'C']},
{u'comments': [u'A', u'B', u'C']}]}
考えられる解決策を調べました$ positional operator
が、まだわかりません。これを行うために Python でロジックを記述するのは非常に簡単ですが、純粋に単一のpymongo.collection.Collection.update
呼び出しでこれを行うことの優雅さを高く評価します。どんな助けでも大歓迎です。