Podczas korzystania z operatorów możemy nie tylko dokonać porównań między operandami, ale możemy również wyszukiwać brakujące wartości, zaktualizować rekordy i wiele innych. Operator IfNull MongoDB, jeden taki operator, ma swoje specjalne miejsce, ponieważ sprawdza, czy określone pole zawiera wartość zerową, czy nie. Jeśli konkretne pole ma wartość zerową, możemy odpowiednio wykonać: Zastąp wartość nową wartością lub uczynić ją pustą. W tym samouczku poznasz użycie operatora IfNull MongoDB za pomocą MongoDB Shell. Dlatego powinieneś zainstalować MongoDB wraz z jego zależnościami.
Utwórz bazę danych i kolekcję
Przejdźmy do wdrożenia niektórych pytań w skorupce MongoDB, aby wyświetlić użycie operatora „ifnull” MongoDB. Wcześniej przyjrzymy się dostępności obecnych baz danych. Obecnie mamy 3 wbudowane bazy danych dostępne w naszym MongoDB zgodnie z instrukcją „pokaż DBS”. Musimy utworzyć manekinową bazę danych, której będziemy używać w naszych nadchodzących przykładach. W tym celu powinniśmy najpierw utworzyć kolekcję bazy danych.
Test> Pokaż DBS
admin 40.00 kib
Config 60.00 kib
Lokalny 72.00 kib
Podczas sprawdzania całkowitej kolekcji mamy w naszej bazie danych, stwierdziliśmy, że na razie nie ma kolekcji i musimy utworzyć taką, która jest instrukcją „Pokaż kolekcje”.
Test> Pokaż kolekcje
Aby utworzyć nową kolekcję, powinieneś wykonywać metodę „CreateCollection” MongoDB w jej powłoce. Powinno to przyjąć nazwę nowo utworzonej kolekcji w parametrach „Dane”. Wynik wyjściowy, taki jak OK: 1 pokazuje, że z powodzeniem generowane jest twoje kolekcja „Dane”.
Test> db.CreateCollection („Data”)
OK: 1
Kiedy szukasz teraz wszystkich kolekcji, zobaczysz nowo wymyśloną kolekcję.
Test> Pokaż kolekcje
Dane
Po wygenerowaniu nowej kolekcji w bazie danych MongoDB, kiedy szukaliśmy bazy danych, na liście wyświetlona jest baza danych „TEST”.
Test> Pokaż DBS
admin 40.00 kib
Config 108.00 kib
Lokalny 72.00 kib
Test 144.00 kib
Wstaw rekordy do kolekcji
Na razie należy upewnić się, że kolekcja „danych” jest pusta, ponieważ nie dodaliśmy do niego żadnych rekordów. Dlatego pusta kolekcja nie ma sensu i musimy wstawić do niej dokumenty. Ponieważ pracujemy dla operatora „$ ifNull”, powinniśmy również dodać pola z wartościami zerowymi. Dlatego, zaczynając od wstawienia nowych udokumentowanych rekordów w kolekcji „danych”, wypróbowaliśmy funkcję MongoDB InsertMoRy (), aby wstawić więcej niż 1 rekord naraz. Wstawienie w sumie 6 zapisów miało miejsce w jednym kroku.
Rekordy powinny znajdować się w formacie tablicy lub [] nawiasów na początku i na końcu rekordów. Każdy rekord powinien być oddzielony przez przecinki „” i kręcone „”. Prawie wszystkie rekordy mają co najmniej 2 pola: „Nazwa” i „Wiek”. Podczas gdy wszystkie pola „nazwy” zawierają wartość ciągu, istnieją pewne rekordy, w których pole „wiek” nie zawiera żadnej wartości, null lub nieokreślonej wartości. Po pomyślnym wykonaniu tego zapytania wkładki dla kolekcji „danych” otrzymasz potwierdzenie na ekranie powłoki MongoDB wyświetlającej automatycznie generowane identyfikatory dla każdego rekordu.
Test> db.Dane.INSERTMANY ([name: „Peter”, wiek: 24, nazwa: „ana”, wiek: null, nazwa: „Bryan”, wiek: "", name: "nina", wiek: 33 , Nazwa: „John”, nazwa: „Michael”, wiek: Undefined])
Uznany: prawda,
InsertedIds:
„0”: ObjectID (”63BC3F53A2E5D7C94C4DE66B”),
„1”: ObjectID (”63BC3F53A2E5D7C94C4DE66C”),
„2”: ObjectID (”63BC3F53A2E5D7C94C4DE66D”),
„3”: ObjectID (”63BC3F53A2E5D7C94C4DE66E”),
„4”: ObjectID (”63BC3F53A2E5D7C94C4DE66F”)
„5”: ObjectID (”63BCBF7552359FABFC4A770E”)
Po pomyślnym włożeniu 6 rekordów w kolekcji „danych” bazy danych „Test” MongoDB, musisz również przyjrzeć się wszystkim tym wszystkim rekordom. W tym celu musisz wyświetlić każdą z rekordów kolekcji „danych” w formacie JSON za pomocą funkcji foreach (). W tym celu należy znaleźć wszystkie rekordy za pomocą funkcji „Znajdź”, a następnie zastosować funkcję foreach (), jak wyświetlona na wyniku poniżej. Argument „printJSON” jest tutaj obowiązkowy. Wyjście do wyświetlania wszystkich 6 rekordów kolekcji „danych” w formacie JSON jest dołączone poniżej.
Test> db.Dane.znajdować().Foreach (printJson)
_ID: ObjectID („63BC3F53A2E5D7C94C4DE66B”), Nazwa: „Peter”, wiek: 24
_ID: ObjectID („63BC3F53A2E5D7C94C4DE66C”), Nazwa: „Ana”, wiek: null
_ID: ObjectID („63BC3F53A2E5D7C94C4DE66D”), nazwa: „Bryan”, wiek: „
_ID: ObjectID („63BC3F53A2E5D7C94C4DE66E”), Nazwa: „Nina”, wiek: 33
_ID: ObjectID („63BC3F53A2E5D7C94C4DE66F”), Nazwa: „John”
_id: ObjectId („63BCBF7552359FABFC4A770E”), nazwa: „Michael”, wiek: null
Zastosuj operator „ifNull” w polu „Age” kolekcji „danych”, ponieważ zawiera on nieokreślone i zerowe wartości w dokumentach. Funkcję Aggregate () MongoDB powinna być wykorzystywana do użycia operatora „ifNull” na polu „wiek”. Dlatego rozpoczęliśmy zapytanie z nazwą kolekcji. Następnie następuje funkcja „agregat” zawierająca operatora projektu do projektu w konkretnym polu, na którym będzie zastosowany operator „ifNull”. Pole „Nazwa” jest ustawione na 1, dzięki czemu można je wyświetlić. Operator „IfNull” zawiera dwa argumenty jako [„”, „”] zastosowane do pola „Age”. Wyjście tego zapytania pokazuje wiek: ”, który zastąpił wartości wiek niczym. Dzieje się tak, ponieważ nie zdefiniowaliśmy nazwy pola „wiekowego” w pierwszym argumencie operatora ifnull.
Test> db.Dane.agregate ([$ projekt: name: 1, wiek: $ ifNull: ["", ""]]))
[[[
_ID: ObjectID („63BCB7A552359FABFC4A7701”), nazwa: „Peter”, wiek: „,
_id: ObjectId („63BCB7A552359FABFC4A7702”), nazwa: „Ana”, wiek: „,
_id: ObjectID („63BCB7C352359FABFC4A7703”), nazwa: „Bryan”, wiek: „,
_ID: ObjectID („63BCB7C352359FABFC4A7704”), nazwa: „Nina”, wiek: „,
_ID: ObjectID („63BCB7D052359FABFC4A7705”), nazwa: „John”, wiek: „,
_ID: ObjectID („63BCBF7552359FABFC4A770E”), nazwa: „Michael”, wiek: „
]
Kiedy użyjesz dowolnego wyrażenia ciągów w pierwszym argumencie operatora „ifNull”, zastąpi to wszystkie wartości pola „Age” tym ciągiem. W wyniku pokazanym poniżej użyliśmy ciągu „niezdefiniowany” i zajął miejsce oryginalnych wartości w polu wiekowym wszystkich rekordów.
Test> db.Dane.agregate ([$ projekt: nazwa: 1, wiek: $ ifNull: [„Undefined”, „”]]))))
[[[
_ID: ObjectID („63BCB7A552359FABFC4A7701”), Nazwa: „Peter”, Age: „Undefined”,
_id: ObjectID („63BCB7A552359FABFC4A7702”), nazwa: „Ana”, wiek: „Undefined”,
_ID: ObjectID („63BCB7C352359FABFC4A7703”), Nazwa: „Bryan”, Age: „Undefined”,
_ID: ObjectID („63BCB7C352359FABFC4A7704”), nazwa: „nina”, wiek: „Undefined”,
_ID: ObjectID („63BCB7D052359FABFC4A7705”), nazwa: „John”, wiek: „Undefined”,
_id: ObjectID („63BCBF7552359FABFC4A770E”), nazwa: „Michael”, wiek: „Undefined”
]
Aby uniknąć czegoś takiego, będziemy musieli użyć pola „Age” jako pierwszego argumentu dla operatora IfNull wraz ze znakiem „$”. Następnie niech drugi argument będzie pusty i.mi., Drugi argument jako jego wartość. Po wykonaniu tej zagregowanej instrukcji będziemy wyświetlać podłączone dane wyjściowe. Teraz widać, że pole wiekowe wyświetla swoje oryginalne wartości, w których nie ma wartości „zerowej”. Ponadto, gdzie wartości są zerowe lub niezdefiniowane, pole wiekowe jest zastępowane pustymi ”.
Test> db.Dane.agregate ([$ projekt: nazwa: 1, wiek: $ ifNull: [„$ wiek”, „”]])))
[[[
_ID: ObjectID („63BCB7A552359FABFC4A7701”), nazwa: „Peter”, wiek: 24,
_id: ObjectId („63BCB7A552359FABFC4A7702”), nazwa: „Ana”, wiek: „,
_id: ObjectID („63BCB7C352359FABFC4A7703”), nazwa: „Bryan”, wiek: „,
_ID: ObjectID („63BCB7C352359FABFC4A7704”), nazwa: „Nina”, wiek: 33,
_ID: ObjectID („63BCB7D052359FABFC4A7705”), nazwa: „John”, wiek: „,
_ID: ObjectID („63BCBF7552359FABFC4A770E”), nazwa: „Michael”, wiek: „
]
Spójrzmy na różne wartości wyjściowe dla wartości zerowych pola „Age” za pomocą operatora ifNull w instrukcji zagregowanej. Tym razem używamy ciągu „wartości null” jako drugiego argumentu dla operatora ifNull do zastąpienia wartości zerowych w polu „wiek”. Wynik dołączony poniżej wyświetlono wymianę wartości zerowych z ciągiem „wartość null”.
Test> db.Dane.agregate ([$ projekt: nazwa: 1, wiek: $ ifNull: [„$ wiek”, „wartość null”]])))
[[[
_ID: ObjectID („63BCB7A552359FABFC4A7701”), nazwa: „Peter”, wiek: 24,
_ID: ObjectID („63BCB7A552359FABFC4A7702”), Nazwa: „Ana”, wiek: „wartość null”,
_id: ObjectID („63BCB7C352359FABFC4A7703”), nazwa: „Bryan”, wiek: „,
_ID: ObjectID („63BCB7C352359FABFC4A7704”), nazwa: „Nina”, wiek: 33,
_ID: ObjectId („63BCB7D052359FABFC4A7705”), nazwa: „John”, wiek: „Null Value”,
_id: ObjectID („63BCBF7552359FABFC4A770E”), nazwa: „Michael”, wiek: „NULL WARTOŚĆ”
]
Wniosek
Ten artykuł zawiera dyskusję na temat korzystania z operatora ifnull, zaczynając od wprowadzenia do ilustracji końcowej. Ilustracje pokazują, w jaki sposób oryginalna wartość „null” określonego pola może zostać zastąpiona nową wartością. Po omówieniu całej procedury korzystania z operatora ifNull w funkcji agregatu MongoDB, osiągnęliśmy wynik, że pierwszym argumentem operatora ifNull powinien być nazwa pola z znakiem „$”, aby uniknąć komplikacji.