MongoDB $ strcasecmp

MongoDB $ strcasecmp
Dokonując porównania w różnych językach, zwykle używamy operatorów porównawczych. Porównanie może być wrażliwe na przypadki lub niewrażliwe zgodnie z wyborem użytkownika. Podobnie jak inne środowiska programistyczne, MongoDB ma swoich operatorów porównawczych, a jednym z tych operatorów jest operator „strcasecmp”. Operator Strcasecmp MongoDB porównuje dwie wartości łańcucha w sposób bezsensowny i.mi., Zignoruj ​​obudowę ciągu i wyszukaj. Operator Strcasecmp zwraca 0, jeśli oba ciągi są równe, 1 Jeśli pierwsza wartość jest większa niż druga, a -1 Jeśli pierwsza wartość jest mniejsza niż druga wartość. Operator może być używany w zapytaniu MongoDB do filtrowania dokumentów na podstawie wartości ciągu.

Utwórz kolekcję

Zacznij od tworzenia nowej kolekcji bazy danych w banku bazy danych. Polecenie załączone poniżej to tworzenie nowej kolekcji o nazwie „Dane” w naszej bazie danych MongoDB „Test”. Odpowiedź OK: 1 wskazuje, że kolekcja została pomyślnie utworzona i można ją dalej wykorzystać.

Test> db.CreateCollection („Data”)
OK: 1

Wstaw rekordy do kolekcji

Na początku tworzenia kolekcji musi być pusta, ponieważ nie dodaliśmy jeszcze żadnych dokumentów. Aby wykonać operator strcasecmp w kolekcji „danych”, powinien mieć dokumenty. Dlatego będziemy używać funkcji MongoDB InsertMany, aby dodać liczne rekordy do kolekcji o nazwie „dane” jednocześnie. Wkładane dokumenty mają format par kluczowych, z klawiszami „tytuł” ​​i „desc” i ich odpowiednimi wartościami. Wartości wstawiane to „John”, „John”, „Idk” i „Lisa” dla klucza „Tytuł” ​​i „A Random Guy”, „Good Boy”, „Idontkw” i „Enginerer” dla „ Klucz DESC ”. Poleceniem jest dodanie 4 nowych dokumentów. Dane wyjściowe pokazuje „uznane” jako wartość logiczną, która jest ustawiona na true, wskazując, że zapytanie zostało potwierdzone i wykonane przez serwer MongoDB.

Test> db.Dane.InsertMany ([tytuł: „John”, desc: „losowy facet”, tytuł: „John”, desc: „dobry chłopiec”, tytuł: „idk”, desc: „idontow”, tytuł : „Lisa”, DESC: „Enginnerer”])

Uznany: prawda,
InsertedIds:
„0”: ObjectID (”63C90D6A42844A817C33167C”),
„1”: ObjectID (”63C90D6A42844A817C33167D”),
„2”: ObjectID (”63C90D6A42844A817C33167E”),
„3”: ObjectID (”63C90D6A42844A817C33167F”)

Wyświetl rekordy kolekcji

Po włożeniu w sumie 4 rekordów w kolekcji „danych” bazy danych „testowych” powinniśmy zweryfikować dokumenty przynajmniej raz. Dlatego musimy wyświetlić wstawione rekordy w skorupce MongoDB do oglądania. Polecenie do przeglądania rekordów zostało załączone poniżej. Korzystając z metody MongoDB Find (), odzyskaliśmy wszystkie dokumenty kolekcji „danych”. Pusty obiekt przekazany jako argument do metody FINK () oznacza, że ​​nie zastosowano warunku filtrowania, a wszystkie dokumenty w kolekcji zostaną zwrócone. Dane wyjściowe tego polecenia jest szereg dokumentów, z których każdy zawiera pól _id, tytuł i desc oraz ich odpowiednie wartości, które zostały dodane wcześniej w kolekcji. Wyjście potwierdza, że ​​dokumenty są obecne w kolekcji i można je odzyskać w celu dalszego przetwarzania.

Test> db.Dane.znajdować()
[_id: ObjectID („63C90D6A42844A817C33167C”), tytuł: „John”, DESC: „A Random Guy”,
_id: ObjectID („63C90D6A42844A817C33167D”), tytuł: „John”, dec: „dobry chłopiec”,
_ID: ObjectId („63C90D6A42844A817C33167E”), tytuł: „IDK”, DESC: „IDONTWE”,
_ID: ObjectID („63C90D6A42844A817C33167F”), tytuł: „Lisa”, DESC: „Enginnerer”]

Przykład nr 01:

W naszej pierwszej ilustracji MongoDB będziemy używać operatora Strcasecmp do porównania dwóch wartości ciągów: porównanie wrażliwości przypadków. W tym celu uruchomimy zapytanie pokazane poniżej w powładzie MongoDB, która wykorzystuje funkcję agregatów MongoDB do wykonywania serii operacji na zbiorze o nazwie „Dane”. Pierwsza operacja to etap projektu $, który modyfikuje dokumenty w kolekcji poprzez dodanie lub usuwanie pól. W tym przypadku etap $ Project wyświetli wszystkie rekordy pola „Tytuł” ​​wraz z dodaniem nowego pola o nazwie „Wynik” do każdego dokumentu, który jest wynikiem porównania wartości pola „Tytuł” ​​do ciąg „IDK” za pomocą operatora $ strcasecmp.

Porównanie jest bezsensowne, co oznacza, że ​​„John” i „Jan” byłyby uważane za równe. Nowe pole „Wynik” wyświetla wyjście porównania pola „Tytuł” ​​z „IDK”. 0 Na trzecim rekordie pokazuje, że ciąg „id” jest równy ciągu „idk” w polu „Tytuł”, podczas gdy reszta to 1.

Test> db.Dane.agregate ([$ projekt: tytuł: 1, wynik: $ strcasecmp: [„$ title”, „idk”]])))
[_id: ObjectID („63C90D6A42844A817C33167C”), tytuł: „John”, wynik: 1,
_id: ObjectID („63C90D6A42844A817C33167D”), tytuł: „John”, wynik: 1,
_ID: ObjectID („63C90D6A42844A817C33167E”), tytuł: „IDK”, wynik: 0,
_ID: ObjectID („63C90D6A42844A817C33167F”), tytuł: „Lisa”, wynik: 1]

Przykład nr 02:

Miejmy nową ilustrację porównywania ciągów w sposób bezsensowny w ramach bazy danych MongoDB. Tym razem kod, którego używamy, wykorzystuje tę samą funkcję agregatów do przeprowadzenia porównania na polu „tytuł”. Etap projektu $ tworzy nowe pole o tej samej nazwie: „wynik”, który przechowuje wyniki porównawcze. Do porównania używamy tego samego operatora $ strcasecmp. Operator $ strcasecmp jest przekazywany z dwoma argumentami: „$ tytuł”, który jest wartością pola „Tytuł” ​​w każdym dokumencie, oraz „John”, który jest ciągiem używanym jako wartość porównawcza. W tym przykładzie pierwszy dokument ma pole „Jana”, które jest równe „Johnowi”, więc wynik to 0.

Drugi dokument ma pole „tytułu” „Jana”, które jest również równe „Johnowi”, ale w wielkim poziomie. Tak więc „wynik” wynosi również 0. Trzeci dokument ma pole „tytułu” „IDK”, które jest mniejsze niż „John” pod względem kolejności leksykograficznej, więc wynik wynosi -1. Czwarty dokument ma pole „tytułu” „Lisa”, które jest większe niż „John” pod względem porządku leksykograficznego, więc wynik wynosi 1.

Test> db.Dane.agregate ([$ projekt: tytuł: 1, wynik: $ strcasecmp: [„$ title”, „John”]])))
[_id: ObjectID („63C90D6A42844A817C33167C”), tytuł: „John”, wynik: 0,
_id: ObjectID („63C90D6A42844A817C33167D”), tytuł: „John”, wynik: 0,
_ID: ObjectID („63C90D6A42844A817C33167E”), tytuł: „IDK”, wynik: -1,
_ID: ObjectID („63C90D6A42844A817C33167F”), tytuł: „Lisa”, wynik: 1]

Przykład nr 03:

Na naszej ostatniej ilustracji będziemy używać pola „DESC” kolekcji „danych” do porównania z nowym ciągiem. Operator $ strcasecmp jest przekazywany dwa argumenty: „$ desc”, który jest wartością pola „DESC” w każdym dokumencie i „idontow”, który jest ciągiem używanym jako wartość porównawcza.

Pierwszy, drugi i czwarty dokumenty mają pole „DESC” „losowego faceta”, które jest mniejsze lub większe niż ciąg „idontow” pod względem porządku leksykograficznego. Tak więc wynik tych rekordów jest -1. Trzeci dokument ma pole „DESC” „Idontknow”, które jest równe „idontow”, niezależnie od przypadku liter, więc wynik to 0.

Test> db.Dane.agregate ([$ projekt: desc: 1, wynik: $ strcasecmp: [„$ desc”, „idontow”]]))
[_ID: ObjectID („63C90D6A42844A817C33167C”), DESC: „A Random Guy”, wynik: -1,
_id: ObjectID („63C90D6A42844A817C33167D”), DESC: „Good Boy”, wynik: -1,
_ID: ObjectID („63C90D6A42844A817C33167E”), DESC: „IDONTOWE”, wynik: 0,
_ID: ObjectID („63C90D6A42844A817C33167F”), DESC: „Enginnerer”, wynik: -1]

Wniosek

Niniejszy przewodnik przedstawia koncepcję i zastosowanie operatora Strcasecmp MongoDB. Stworzyliśmy nową kolekcję i wykonaliśmy polecenia funkcyjne agregate () wraz z operatorem strcasecmp, aby zademonstrować użycie operatora Strcasecmp. Przykłady zastosowane w tym artykule pokazują, w jaki sposób można porównać pojedynczy ciąg i niewrażliwie z wartościami pól kolekcji.