MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Usuń wpisy tablicy zawierające pustą tablicę

Nie wiem, czego próbowałeś, ponieważ po prostu nie jest to zawarte w twoim pytaniu, ale najlepszym sposobem sprawdzenia, czy tablica jest pusta, jest po prostu sprawdzenie, gdzie 0 indeks nie pasuje do $exists :

Inventory.update(
    { "products.rates.0": { "$exists": false } },
    { 
        "$pull": {
            "products": { "rates.0": { "$exists": false } }
        }
    },
    { "multi": true },
    function(err,numAffected) {

    }
)

Część "zapytanie" .update() oświadczenie to upewnienie się, że próbujemy tylko dotknąć dokumentów, które mają pustą tablicę w "products.rates" . Nie jest to wymagane, ale pozwala uniknąć testowania następującego warunku instrukcji „update” w dokumentach, w których warunek ten nie jest true dla dowolnego elementu tablicy, dzięki czemu wszystko działa trochę szybciej.

Właściwa część dotycząca aktualizacji ma zastosowanie $pull w "products" tablica, aby usunąć dowolny z tych elementów, w których "wewnętrzny" "rates" jest pustą tablicą. Tak więc „ścieżka” w $pull faktycznie zagląda do wnętrza "products" treść w każdym razie, więc odnosi się do tego, a nie do całego dokumentu.

Oczywiście $pull usunie wszystkie elementy, które pasują do siebie w jednej operacji. "multi" jest potrzebne tylko wtedy, gdy naprawdę chcesz zaktualizować więcej niż jeden dokument za pomocą wyciągu




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wstaw dane do wewnętrznej tablicy w MongoDB

  2. Funkcja agregująca MongoDB w C#

  3. Jak uzyskać wyjście powłoki mongo (trzy kropki) dla niezakończonego polecenia?

  4. Czy MongoDB umożliwia generowanie wartości sekwencyjnych?

  5. Tworzenie pliku w GridFs (MongoDb)