$ CMP jest operatorem rurociągu agregacyjnego MongoDB, który jest używany do porównania wartości. Operator $ CMP zwraca wyniki wartości liczbowych, które obejmują „1”, „-1” i „0” na podstawie podanych wartości. Operator $ CMP zwraca „1”, gdy pierwsza określona wartość ma większą wartość niż druga wartość. Z drugiej strony operator $ CMP podaje „-1”, gdy pierwsza wartość ustalona jest mniejsza niż druga dana wartość. Wyniki „0” są uzyskiwane, gdy podane wartości dla porównania w operatorze $ CMP są równe.
W jaki sposób operator $ CMP MongoDB porównuje dwie wartości
Tutaj używamy operatora $ CMP do celów porównawczych. Tworzymy kolekcję „MyData”, która potrzebuje dokumentów do wdrożenia operatora $ CMP. Przechowujemy sześć dokumentów w tym samym czasie w kolekcji „MyData” za pomocą następującego zapytania InsertMany:
db.Moje dane.wstrząs
„_id”: 1,
"Mierzyć dystans",
„X”: 5,
„Y”: 3,
„Z”: „Z1”: 6, „Z2”: 2
,
„_id”: 2,
„Mierz”: „Prędkość”,
„X”: 10,
„Y”: 10,
„Z”: „Z1”: 4, „Z2”: 7
,
„_id”: 3,
„Miarz”: „Velocity”,
„X”: 8,
„Y”: 14,
„Z”: „Z1”: 3, „Z2”: 9
,
„_id”: 4,
„Mierz”: „Przemieszczenie”,
„X”: null,
„Y”: Null,
„Z”: „Z1”: 15, „Z2”: 3
,
„_id”: 5,
„Mierz”: „Czas”,
„X”: null,
„Y”: 16,
„Z”: „Z1”: 0, „Z2”: 2
,
„_id”: 6,
„Mierz”: „Przemieszczenie”,
„X”: izodat (”2020-12-10T05: 00: 20.112Z ”),
„Y”: izodat (”2023-02-06T05: 00: 20.112Z ”),
„Z”: „Z1”: 3, „Z2”: 9
])
Odzyskujemy opcję potwierdzenia jako true, która wskazuje, że dokumenty są wstawiane do danego zbioru MongoDB.
Uznany: prawda,
InsertedIds: '0': 1, „1”: 2, „2”: 3, „3”: 4, „4”: 5, „5”: 6
Przykład 1: Korzystanie z operatora $ CMP w MongoDB w celu porównania z wartością
Używamy tutaj operatora $ CMP MongoDB, aby porównać określone pole dokumentu z inną wartością. Operator $ mecz jest ustawiony na wyrażenie „„ miar ”:„ odległość ”” najpierw, aby dopasować dokument, aby porównać operacje. Następnie korzystamy z operatora projektu, który projektuje pole „Wynik” dla operatora $ CMP. Operator $ CMP jest wywoływany w polu rzutowanym „Wynik” i wprowadza wyrażenie „$ x”, 5] ”, w którym„ $ x ”jest polem dopasowanego dokumentu, a„ 5 ”jest wartością porównywaną z Pole „$ x”.
db.Moje dane.agregate ([$ match: „miar”: „dystans”,
$ projekt:
Wynik: $ cmp: ["$ x", 5]]))
Wyniki operatora $ CMP pokazują wartość „0” w stosunku do prognozowanego pola „wyników”, ponieważ zarówno pole „$ x” to „5” w dokumencie, a wartość, którą należy porównać, to także „5”.
[_id: 1, wynik: 0]
Przykład 2: Korzystanie z operatora $ CMP w MongoDB w celu porównania z pól
Używamy operatora $ CMP do porównania pola z wartością ustawioną. Teraz dokonujemy porównania z dwoma dziedzinami tego samego dokumentu. Zaczynamy od $ Project Operator, w którym pola „_id”, „$ x” i „$ y” dają wartość „1”, które są wyświetlane wraz z wynikowym wyjściem. Następnie definiujemy kolejne pole „wyników” w $ operator projektu, w którym operator $ CMP jest stosowany z oświadczeniem „[„ $ x ”,„ $ y ”]”. „$ X” i „$ y” to pola dokumentów używanych przez operatora $ cmp do porównania ich wartości.
db.Moje dane.agregat(
[[[
$ projekt:
„_id”: 0,
„X”: 1,
„Y”: 1,
Wynik: $ cmp: [„$ x”, „$ y”]
]
)
Wartość zwracana przez operator $ CMP dla pól porównawczych każdego dokumentu jest wyświetlana następująco. Niektóre wyniki mają wartość „1” w stosunku do pola „Wynik”, ponieważ wartość „$ x” jest większa niż wartość „$ y”. Niektóre wyniki operatora $ CMP zawierają wartość „-1”, w której wartości „$ x” są niższe niż wartość „$ y”. Tam możemy zobaczyć wyniki, które mają wyniki „0” ze względu na równą wartość zarówno „$ x”, jak i „$ y”.
[[[
X: 5, y: 3, wynik: 1,
X: 10, y: 10, wynik: 0,
X: 8, y: 14, wynik: -1,
X: null, y: null, wynik: 0,
X: NULL, Y: 16, wynik: -1,
X: Izodate („2020-12-10T05: 00: 20.112Z "), Y: Izodat („ 2023-02-06T05: 00: 20.112Z ”),
Wynik: -1
]
Przykład 3: Korzystanie z operatora $ CMP w MongoDB w celu porównania z osadzonymi polami
Następnie wdrażamy operator $ CMP do porównania na wbudowanych polach dokumentu. Tutaj dowiadujemy się dokumentu, którego „mierz” pole przechowuje wartość „prędkości”. Po dopasowaniu dokumentu operatora $ Match, operator $ CMP porównuje wartość. Mamy pole „Wynik” wewnątrz $ Project Operator, który jest ustawiony na operator $ CMP. Operator $ CMP zawiera dwa wbudowane pola, „Z1” i „Z2”, z pola „Z”, które należy porównać.
db.Moje dane.Agregate ([$ match: „miar”: „prędkość”,
$ projekt: wynik:
$ cmp: ["$ z.Z1 "," $ z.Z2 "]])
Zwrócona wartość to „-1” w stosunku do opcji „Wynik” przez operatora $ CMP od czasu osadzonego „$ z.Pole Z1 ”ma mniejszą wartość niż $ z.wartość Z2.
[_id: 2, wynik: -1]
Przykład 4: Korzystanie z operatora $ CMP w MongoDB do porównania z wartościami zerowymi
Operator $ CMP porównuje również wartości zerowe w MongoDB. „NULL” jest określony jako wartość jest uważana za wartość ciągu. Tutaj porównujemy pola dokumentu, które mają wartości zerowe. Ustawiamy operator $ mecz, który pasuje do dokumentu do pola „_id”, którego wartość to „4”. Następnie definiujemy pola „_id”, „mierz”, „x” i „y” z „1” dla włączenia tych pól. Następnie operator $ CMP jest wykorzystywany przez $ Project Operator pola „RES”. Operator $ CMP tutaj porównuje wartości pól „$ x” i „$ y”, które są przechowywane w dokumencie „_id: 4”.
db.Moje dane.kruszywa
[[[
$ match: "_id": 4,
$ projekt:
„_id”: 1,
„X”: 1,
„Y”: 1,
Wynik: $ cmp: [„$ x”, „$ y”]
]
)
„RES” ma wartość wyjściową „0”, ponieważ gdy wartości są porównywane przez operatora $ CMP, zawierają null. Jeśli jedna z wartości jest zerowa, a druga ma liczbę, operator $ CMP porównuje je inaczej, co omówiono w poniższym przykładzie:
[_id: 4, x: null, y: null, wynik: 0]
Przykład 5: Korzystanie z operatora $ CMP w MongoDB w celu porównania różnych typów
Operator $ CMP porównuje wartość, a także różne typy zgodnie z dostarczoną kolejnością porównawczą. Mamy dokumenty w naszej kolekcji „mydata”, która zawiera różne typy wartości. Operator $ CMP może je porównać i wygenerować wynik zgodnie z rodzajem wartości. Mamy zapytanie, w którym operator $ Match znajduje dokumenty w polu „_id”. Pole „_id” ustawione w operator $ mecz jako wyrażenie jest dalej nazywany operatorem $ nin. Operator MongoDB $ NIN dopasowuje tylko dokument, którego wartości „1, 2, 3” nie są równe. Następnie wywołujemy operator $ CMP, który porównuje dopasowane pola dokumentów, „$ x” i „$ y”, mając różne wartości typu.
db.Moje dane.kruszywa
[[[
$ match: "_id": $ nin: [1, 2, 3],
$ projekt:
„_id”: 1,
„Miarz”: 1,
„X”: 1,
„Y”: 1,
RES: $ cmp: [„$ x”, „$ y”]
]
)
Widzimy wartości porównywanych pól „x” i „y” na wyjściu i ich wynikowe wartości, które są generowane przez operatora $ cmp. Każdy dopasowany dokument zwraca różne wartości porównywane.
[[[
[[[
_id: 4, mierz: „przemieszczenie”, x: null, y: null, res: 0,
_id: 5, mierz: „czas”, x: null, y: 16, res: -1,
_id: 6,
Zmierz: „Przemieszczenie”,
X: Izodat („2020-12-10T05: 00: 20.112Z ”),
Y: Izodat („2023-02-06T05: 00: 20.112Z ”),
RES: -1
]
Wniosek
W tym przewodniku zbadano operatora MongoDB $ CMP w celu porównania wartości. Tutaj omówiliśmy operatora $ CMP z przykładami. Najpierw porównaliśmy pole z określoną wartością za pomocą operatora $ CMP. Następnie porównaliśmy dwa różne pola i osadzone pola przez operatora $ CMP. Operator $ CMP służy również do porównania wartości zerowych. Na koniec mamy użycie operatora $ CMP do porównania wartości różnych typów.