在mongodb集合中,我的文档包含看起来像这样的嵌入文档列表(使用pymongo
,col
是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
调用完成此操作的优雅。任何帮助将不胜感激。