2012-11-15 17 views
2

嵌套值我有一個數據:發現在pymongo

{'_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'},我想刪除它們。

我該如何實現這一目標?

- 編輯 -

我知道如何更新(在我的情況下刪除),我將使用$未設置操作。我不知道的是如何找到我需要刪除的值。

+0

@alexvassel - 「你試過了什麼?」沒有幫助。這個問題有一個具體的答案,獨立於海報嘗試過的任何東西。如果您因爲不知道解決方案而需要了解解決方案的相關信息,請參閱文檔或專業知識。這個問題是關於如何詞組查詢。這就像問「你試過了什麼?」問某人:「用法語指左邊的第二座建築是什麼工作方式?」。 – Purrell

+0

@Purrell我看不到你的答案。您鍵入的文本不會解決問題。 – alexvassel

+0

@alexvassel再來一次? – Purrell

回答

1

使用$pull操作是這樣的:

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

multi參數設置爲True告訴update更新所有文件,而不僅僅是第一。

+0

我不知道價值,每件商品都有自己的最低價值。 –

+0

@AlanDert對不起,我誤解了你的問題。如果需要刪除具有最小值的元素,則不需要執行此操作,因此您需要迭代集合並手動更新每個項目以刪除代碼中的元素。 – JohnnyHK

+0

那麼,我該怎麼辦呢? –