在 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
更新将文档中的所有内容重置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
调用执行此操作的优雅。任何帮助,将不胜感激。