我有一个数据:

{'_id': 0, 'values': [{'value': 1, 'value_type': 'type1'}, {'value': 2, 'value_type': 'type2'}, {'value': 134, 'value_type' : 'type1'}, {'value': 2564, 'value_type': 'type212'}]}
{'_id': 1, 'values': [{'value': 136, 'value_type': 'type1'}, {'value': 465652, 'value_type': 'type1'}, {'value': 4, 'value_type' : 'type299'}, {'value': 112564, 'value_type': 'type2456'}]}

我正在使用pymongo 2.2和python 3.2。
其目的是找到value_type等于type1value的最小值的字典(value和value_type)来删除它们。在我的例子中,这是{'value': 1, 'value_type': 'type1'} and {'value': 136, 'value_type': 'type1'}并且我想删除它们。
我怎样才能做到这一点?
--编辑--
我知道如何更新(在我的例子中是delete),我将使用$unset操作符。我不知道的是如何找到需要删除的值。

最佳答案

使用$pull运算符,如下所示:

value = 150
coll.update({},
    {'$pull': {'values': {'value_type': 'type1', 'value': {'$lt': value}}}},
    multi=True)

multi参数设置为True将告诉更新程序更新所有文档,而不仅仅是第一个文档。

关于python - 在pymongo中查找嵌套值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13401052/

10-12 19:55