2

我有一个数据:

{'_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等于type1和最小值的字典(value 和 value_type)value来删除它们。就我而言,就是这样{'value': 1, 'value_type': 'type1'} and {'value': 136, 'value_type': 'type1'},我想删除它们。

我该如何实现呢?

- 编辑 -

我知道如何更新(在我的情况下删除),我将使用 $unset 运算符。我不知道如何找到我需要删除的值。

4

2 回答 2

2

使用 $pull 更新查询 http://www.mongodb.org/display/DOCS/Updating#Updating-%24pull

coll.update({}, {"$pull" :{"values": {"value":1}})
于 2012-11-15T15:55:21.317 回答
1

像这样使用$pull运算符:

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

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

于 2012-11-15T16:10:33.437 回答