2010-12-28 14 views
10

Pozdrowienia,Usuwanie wielu dokumentów MongoDB w Pythonie

Ja próbuje usunąć wiele dokumentów z kolekcji MongoDB, używając następującej składni. Nie wiem, czy to jest prawidłowe, jak znalazłem go gdzieś w internecie i nie były w stanie znaleźć coś od egzekwowania zasadność tego stwierdzenia:

pymongo_collection_object.remove(
    [ 
     { 
      'sku': '100-00' 
     }, 
     { 
      'sku': '200-00' 
     } 
    ] 
, safe=True) 

spodziewałbym powyższy kod usunie zarówno dokumenty zawierające "sku" o wartości "100-00" lub "200-00", ale niestety oba dokumenty są nadal obecne w kolekcji. Próbowałem również rzucić zarówno "sku" klucz i jego wartość do Unicode, jak wiem, że są przechowywane w tym kodowaniu. Jak można się przekonać, włączam także tryb awaryjny, który zapewnia, że ​​po stronie serwera nie dzieje się nic dziwnego.

Każda pomoc jest doceniana, dziękuję!

Odpowiedz

12

Możesz to zrobić, używając operatora $ lub/$.

Spróbuj tego:

pymongo_collection_object.remove({'$or': [{'sku': '100-00'}, {'sku': '200-00'}]}, safe=True) 

lub

pymongo_collection_object.remove({'sku': {'$in': ['100-00', '200-00']}}, safe=True) 
+0

To jest dokładnie to, co potrzebne, dziękuję bardzo !! :) –

+0

Dzięki. Dzięki $ in nie zadziałało dla mnie, ale $ lub działa świetnie! –

+3

Ah, BTW, w operatory warunkowe pymongo (lub Python) ($ in i $ lub w tym przypadku) muszą być użyte jako ciąg, w przeciwnym razie zwraca SyntaxError. "$ lub" i "$ in". –

Powiązane problemy