MongoDB $ CMP

MongoDB $ CMP

Der $ CMP ist der Aggregationspipeline -Operator von MongoDB, der zum Vergleich der Werte verwendet wird. Der $ CMP-Operator gibt die Ergebnisse in numerischen Werten zurück, die "1", "-1" und "0" basierend auf den angegebenen Werten enthalten. Der $ CMP -Operator gibt "1" zurück, wenn der erste angegebene Wert einen höheren Wert als der zweite Wert hat. Andererseits gibt der $ CMP-Operator „-1“ an, wenn der erste Satzwert geringer ist als der zweite gegebene Wert. Die Ergebnisse „0“ werden erhalten, wenn die angegebenen Werte für den Vergleich im $ CMP -Operator gleich sind.

Wie vergleicht der $ CMP -Operator von MongoDB die beiden Werte?

Hier verwenden wir den $ CMP -Operator zu Vergleichszwecken. Wir erstellen die „MyData“ -Kollektion, die die Dokumente für die Implementierung des $ CMP -Operators benötigt. Wir speichern die sechs Dokumente gleichzeitig in der "MyData" -Kollektion mit der folgenden InsertMany -Abfrage:

db.Meine Daten.InsertMany ([

"_id": 1,
"Distanz messen",
"X": 5,
"Y": 3,
"Z": "Z1": 6, "Z2": 2
,

"_id": 2,
"Messen": "Geschwindigkeit",
"X": 10,
"Y": 10,
"Z": "Z1": 4, "Z2": 7
,

"_id": 3,
"Maß": "Geschwindigkeit",
"X": 8,
"Y": 14,
"Z": "Z1": 3, "Z2": 9
,

"_id": 4,
"Messen": "Verschiebung",
"X": Null,
"Y": null,
"Z": "Z1": 15, "Z2": 3
,

"_id": 5,
"Messzeit",
"X": Null,
"Y": 16,
"Z": "Z1": 0, "Z2": 2
,

"_id": 6,
"Messen": "Verschiebung",
"X": Isodat ("2020-12-10t05: 00: 20.112Z "),
"Y": isodat ("2023-02-06T05: 00: 20.112Z "),
"Z": "Z1": 3, "Z2": 9

]))

Wir rufen die Bestätigungsoption als True ab, die angibt, dass die Dokumente in die angegebene Sammlung von MongoDB eingefügt werden.


Anerkannt: wahr,
InsertDIDs: '0': 1, '1': 2, '2': 3, '3': 4, '4': 5, '5': 6

Beispiel 1: Verwenden des $ cmp -Operators in MongoDB zum Vergleich mit dem Wert

Wir verwenden den $ cmp -Operator von MongoDB hier, um das angegebene Feld des Dokuments mit einem anderen Wert zu vergleichen. Der $ Match -Operator wird mit dem Ausdruck "" messen ":" Distanz "" festgelegt, um das Dokument zum Vergleich der Operationen zu vergleichen. Als Nächst. Der $ CMP -Operator wird im projizierten Feld "Ergebnis" aufgerufen und gibt den Ausdruck "$ x", 5] "ein, wobei" $ x "ein Feld des übereinstimmenden Dokuments ist und der" 5 "der Wert ist, der mit dem verglichen werden muss Feld "$ x".

db.Meine Daten.Aggregate ([$ Match: "messen": "Distanz",
$ project:
Ergebnis: $ cmp: ["$ x", 5]])

Die Ergebnisse des $ CMP -Operators zeigen den Wert von „0“ gegen das projizierte Feld „Ergebnis“, da sowohl das Feld "$ x" im Dokument "5" als auch der zu verglichene Wert "5" ist.

[_id: 1, Ergebnis: 0]

Beispiel 2: Verwenden des $ cmp -Operators in MongoDB zum Vergleich mit den Feldern

Wir verwenden den $ CMP -Operator, um das Feld mit dem festgelegten Wert zu vergleichen. Jetzt führen wir den Vergleich mit zwei Feldern desselben Dokuments durch. Wir beginnen mit dem $ Project -Betreiber, bei dem die Felder „_id“, „$ x“ und „$ y“ einen Wert von „1“ geben, der zusammen mit der resultierenden Ausgabe angezeigt wird. Anschließend definieren wir ein weiteres "Ergebnis" -Feld im $ Project -Betreiber, in dem der $ CMP -Betreiber mit der Erklärung "[" $ x "," $ y "] beschäftigt ist. Die "$ x" und "$ y" sind die Felder der Dokumente, die vom $ CMP -Operator verwendet werden, um ihre Werte zu vergleichen.

db.Meine Daten.Aggregat(
[
$ project:
"_id": 0,
"X": 1,
"Y": 1,
Ergebnis: $ cmp: ["$ x", "$ y"]


]
)

Der von dem $ CMP -Operator für Vergleichsfelder jedes Dokuments zurückgegebene Wert wird im Folgenden angezeigt. Einige Ergebnisse haben den Wert von "1" gegen das Feld "Ergebnis", da der Wert "$ x" höher ist als der Wert "$ y". Einige Ergebnisse des $ CMP-Operators enthalten den Wert "-1", bei dem die Werte "$ x" geringer sind als der Wert von "$ y". Dort können wir die Ergebnisse sehen, die die Ergebnisse „0“ aufgrund des gleichen Werts sowohl von "$ x" als auch "$ y" haben.

[
X: 5, y: 3, Ergebnis: 1,
X: 10, y: 10, Ergebnis: 0,
X: 8, y: 14, Ergebnis: -1,
X: null, y: null, Ergebnis: 0,
X: null, y: 16, Ergebnis: -1,
X: isodat ("2020-12-10t05: 00: 20.112z "), y: Isodat (" 2023-02-06T05: 00: 20.112Z "),
Ergebnis: -1
]

Beispiel 3: Verwenden des $ CMP -Operators in MongoDB zum Vergleich mit den eingebetteten Feldern

Als nächstes setzen wir den $ cmp -Operator ein, der über die eingebetteten Felder des Dokuments verglichen werden soll. Hier finden wir das Dokument, dessen "Mess" -Field den "Geschwindigkeits" -Wert speichert. Sobald das Dokument vom $ Match -Operator übereinstimmt, vergleicht der $ CMP -Operator den Wert. Wir haben das Feld „Ergebnis“ im $ projektbetreiber, der mit dem $ CMP -Operator festgelegt ist. Der $ CMP -Operator enthält die beiden eingebetteten Felder "Z1" und "Z2" des zu vergleichen.

db.Meine Daten.Aggregat ([$ Match: "messen": "Speed",
$ project: Ergebnis:
$ cmp: ["$ z.Z1 "," $ z.Z2 "]])

Der zurückgegebene Wert ist "-1" gegenüber der Option "Ergebnis" des $ cmp-Operators seit dem eingebetteten "$ z".Das Feld Z1 ”hat einen kleineren Wert als das $ z.Z2 -Wert.

[_id: 2, Ergebnis: -1]

Beispiel 4: Verwenden des $ cmp -Operators in MongoDB, um mit den Nullwerten zu vergleichen

Der $ CMP -Operator vergleicht auch die Nullwerte in MongoDB. Der „Null“ wird angegeben, da der Wert als Zeichenfolgewert betrachtet wird. Hier vergleichen wir die Felder des Dokuments, die Nullwerte haben. Wir setzen den $ Match -Operator, der dem Dokument mit dem Feld "_id" übereinstimmt, dessen Wert "4" ist. Danach definieren wir die Felder "_id", "messen", "x" und "y" mit dem "1" für die Aufnahme dieser Felder. Anschließend wird der $ CMP -Betreiber vom $ -Projektbetreiber im Feld „Res“ verwendet. Der $ cmp -Operator vergleicht hier die Werte der Felder "$ x" und "$ y", die im Dokument von "_id: 4" gespeichert sind.

db.Meine Daten.aggregiert (
[
$ Match: "_id": 4,
$ project:

"_id": 1,
"X": 1,
"Y": 1,
Ergebnis: $ cmp: ["$ x", "$ y"]


]
)

Der „res“ hat den Ausgangswert von „0“, da die Werte, wenn die Werte vom $ CMP -Operator verglichen werden, NULL enthalten. Wenn einer der Werte null ist und der andere eine Zahl hat, vergleicht der $ cmp -Operator sie unterschiedlich, was im folgenden Beispiel diskutiert wird:

[_id: 4, x: null, y: null, Ergebnis: 0]

Beispiel 5: Verwenden des $ cmp -Operators in MongoDB, um die verschiedenen Typen zu vergleichen

Der $ CMP -Operator vergleicht den Wert sowie die verschiedenen Typen gemäß der angegebenen Vergleichsreihenfolge. Wir haben die Dokumente in unserer „MyData“ -Kollektion, die die verschiedenen Wertearten enthält. Der $ CMP -Operator kann sie vergleichen und das Ergebnis entsprechend dem Werttyp generieren. Wir haben eine Abfrage, bei der der $ Match -Operator die Dokumente mit dem Feld "_id" findet. Das Feld "_id" im $ Match -Operator als Ausdruck wird weiter als $ Nin -Operator bezeichnet. Der $ Nin -Operator des MongoDB entspricht nur dem Dokument, dessen Werte „1, 2, 3“ nicht gleich sind. Danach rufen wir den $ cmp -Operator auf.

db.Meine Daten.aggregiert (
[
$ Match: "_id": $ nin: [1, 2, 3],
$ project:

"_id": 1,
"Maßnahme": 1,
"X": 1,
"Y": 1,
Res: $ cmp: ["$ x", "$ y"]


]
)

Wir können die Werte der verglichenen "X" und "Y" -Felder in der Ausgabe und deren resultierenden Werte sehen, die vom $ CMP -Operator generiert werden. Jedes übereinstimmende Dokument gibt die verschiedenen verglichenen Werte zurück.

[
[
_id: 4, messen: 'Verschiebung', x: null, y: null, res: 0,
_id: 5, messen: 'time', x: null, y: 16, res: -1,

_id: 6,
Maßnahme: 'Verschiebung',
X: Isodat ("2020-12-10t05: 00: 20.112Z "),
Y: Isodat ("2023-02-06T05: 00: 20.112Z "),
Res: -1

]

Abschluss

In diesem Handbuch wurde der MongoDB $ CMP -Operator untersucht, um die Werte zu vergleichen. Hier haben wir den $ CMP -Operator mit Beispielen besprochen. Wir haben das Feld zuerst mit dem angegebenen Wert mit dem $ CMP -Operator verglichen. Dann haben wir die beiden verschiedenen Felder und die eingebetteten Felder mit dem $ CMP -Operator verglichen. Der $ CMP -Operator wird auch verwendet, um die Nullwerte zu vergleichen. Schließlich haben wir eine Verwendung des $ CMP -Operators, um den Wert verschiedener Typen zu vergleichen.