2

在 mongodb 集合中,我的文档包含如下所示的嵌入式文档列表(使用pymongowithcol作为 的实例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调用执行此操作的优雅。任何帮助,将不胜感激。

4

0 回答 0