通过一次更新操作更新mongo中嵌入文档的所有实例

时间:2012-05-22 20:00:47

标签: mongodb pymongo

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

0 个答案:

没有答案