Der NOT IN-Vergleichsoperator in MongoDB
-
der Vergleichsoperator
$nin
(NOT IN
) in MongoDB -
Verwenden Sie den
$nin
-Operator mit derfind()
-Methode, um ein Feld in MongoDB abzufragen -
Verwenden Sie den
$nin
-Operator mit derfind()
-Methode, um ein eingebettetes Dokument in MongoDB abzufragen -
Verwenden Sie den Operator
$nin
mit der Methodefind()
, um ein Array in MongoDB abzufragen -
Verwenden Sie den
$nin
-Operator mit derfind()
-Methode, um ein Array von Dokumenten in MongoDB abzufragen -
Verwenden Sie den Vergleichsoperator
$nin
mit der Methodeupdate()
, um einen Feldwert in MongoDB zu aktualisieren -
Verwendung von den Operator
$nin
mit regulären Ausdrücken in MongoDB
Vergleichsoperatoren sind sehr nützlich bei der Arbeit mit großen Datensätzen. Es ist hilfreich, Erkenntnisse aus den Daten zu gewinnen.
Dieses Tutorial erläutert die Verwendung des Vergleichsoperators $nin
(NOT IN
) in MongoDB.
Es zeigt auch, wie man die Methoden $nin
mit den Methoden find()
und update()
in MongoDB verwendet. Außerdem lernen wir die Verwendung von regulären Ausdrücken mit dem Operator $nin
kennen.
der Vergleichsoperator $nin
(NOT IN
) in MongoDB
Das $nin
ist einer der Vergleichsoperatoren in MongoDB. Dieser Operator wählt die Dokumente aus, bei denen der Feldwert nicht zum angegebenen Array gehört oder das Feld nicht existiert.
Falls das Feld ein Array, ein Array von Dokumenten oder ein Array von eingebetteten Dokumenten enthält, erhalten wir nur die Dokumente, bei denen das Feld das Array enthält, ohne dass ein Element gleich dem Wert im angegebenen Array ist (wir werden dieses Szenario ebenfalls später sehen). in diesem Tutorial).
Bevor wir uns mit weiteren Details befassen, erstellen wir die Beispielsammlung mit einigen Dokumenten.
Beispielcode:
db.createCollection('students');
db.students.insertMany([
{
"name": {first: "Mehvish", last: "Ashiq"},
"age": 30,
"gender": "Female",
"discipline": "BSCS",
"joining_year": 2014,
"department": "Computer Science",
"courses":[ "Python","Java", "Machine Learning", "Data Science"],
"contact":[
{ phone: { type: "cell", number: "923042516485" }},
{ mail: { type: "official", email: "mehvishofficial@gmail.com"}}
]
},
{
"name": {first: "Aftab", last: "Raza"},
"age": 25,
"gender": "Male",
"discipline": "BSIT",
"joining_year": 2012,
"department": "Information Technology",
"courses":[ "Python","JavaScript", "Information Security"],
"contact":[
{ phone: { type: "landline", number: "111-444-5555" }},
{ mail: { type: "personal", email: "aftab@hotmail.com"}}
]
}
])
db.students.find().pretty()
Ausgabe:
{
"_id" : ObjectId("6298ef54271c5124b739d7d3"),
"name" : {
"first" : "Mehvish",
"last" : "Ashiq"
},
"age" : 30,
"gender" : "Female",
"discipline" : "BSCS",
"joining_year" : 2014,
"department" : "Computer Science",
"courses" : [
"Python",
"Java",
"Machine Learning",
"Data Science"
],
"contact" : [
{
"phone" : {
"type" : "cell",
"number" : "923042516485"
}
},
{
"mail" : {
"type" : "official",
"email" : "mehvishofficial@gmail.com"
}
}
]
}
{
"_id" : ObjectId("6298ef54271c5124b739d7d4"),
"name" : {
"first" : "Aftab",
"last" : "Raza"
},
"age" : 25,
"gender" : "Male",
"discipline" : "BSIT",
"joining_year" : 2012,
"department" : "Information Technology",
"courses" : [
"Python",
"JavaScript",
"Information Security"
],
"contact" : [
{
"phone" : {
"type" : "landline",
"number" : "111-444-5555"
}
},
{
"mail" : {
"type" : "personal",
"email" : "aftab@hotmail.com"
}
}
]
}
Der einzige Grund, etwas komplizierte Dokumente zu haben, besteht darin, die Verwendung des Vergleichsoperators $nin
mit verschiedenen Feldern zu lernen. Zum Beispiel ein einzelnes Feld, ein Feld mit dem eingebetteten Dokument, ein Feld, das ein Array enthält, und ein Array von eingebetteten Dokumenten.
Verwenden Sie den $nin
-Operator mit der find()
-Methode, um ein Feld in MongoDB abzufragen
Beispielcode:
db.students.find({ "joining_year": { $nin: [2011,2014] }}).pretty();
Ausgabe:
{
"_id" : ObjectId("6298ef54271c5124b739d7d4"),
"name" : {
"first" : "Aftab",
"last" : "Raza"
},
"age" : 25,
"gender" : "Male",
"discipline" : "BSIT",
"joining_year" : 2012,
"department" : "Information Technology",
"courses" : [
"Python",
"JavaScript",
"Information Security"
],
"contact" : [
{
"phone" : {
"type" : "landline",
"number" : "111-444-5555"
}
},
{
"mail" : {
"type" : "personal",
"email" : "aftab@hotmail.com"
}
}
]
}
In diesem Beispiel verwenden wir den Operator $nin
mit der Methode find()
, um nach allen Dokumenten zu suchen, bei denen joining_year
weder 2011
noch 2014
ist.
Wir können den Befehl auf folgende Weise verwenden, wenn wir nur bestimmte Felder anstelle des gesamten Dokuments haben möchten. Schreiben Sie 1
, um das Feld und seinen Wert auf dem Computerbildschirm zu drucken, während 0
bedeutet, dass wir dieses Feld nicht in der Ergebnismenge haben wollen.
Beispielcode:
db.students.find(
{ "joining_year": { $nin: [2011,2014] }},
{"name": 1, "discipline": 1, "department": 1, "_id":0}
).pretty();
Ausgabe:
{
"name" : {
"first" : "Aftab",
"last" : "Raza"
},
"discipline" : "BSIT",
"department" : "Information Technology"
}
Verwenden Sie den $nin
-Operator mit der find()
-Methode, um ein eingebettetes Dokument in MongoDB abzufragen
Beispielcode:
db.students.find(
{ "name.last": { $nin: ["Raza", "Ali"] }},
{ "name": 1, "gender": 1, "age": 1, "_id":0}
).pretty();
Ausgabe:
{
"name" : {
"first" : "Mehvish",
"last" : "Ashiq"
},
"age" : 30,
"gender" : "Female"
}
Die Beispieldokumente haben für dieses Tutorial ein Feld mit dem Namen name
, das außerdem das eingebettete Dokument mit zwei Feldern (first
und last
) enthält. Um den Vergleichsoperator $nin
mit dem Feld name
zu verwenden, verwenden wir die Punktnotation name.first
.
Für dieses Code-Snippet versuchen wir, name
, Alter
und Geschlecht
für die Dokumente abzurufen, bei denen der Wert von name.last
nicht das Mitglied des angegebenen Arrays für $nin
ist. Operator.
Wir erhalten die angegebenen Felder aus den Dokumenten, in denen name.last
weder Raza
noch Ali
ist. Wir können auch die Bedingung AND
mit dem Operator $nin
verwenden.
Beispielcode:
db.students.find(
{ "name.last": { $nin: ["Raza", "Ali"]}, "name.first": {$nin: ["Mehvish"]}},
{ "name": 1, "gender": 1, "age": 1, "_id":0}
).pretty();
Dieses Mal erhalten wir keine Ausgabe, da wir zwei Dokumente haben, bei denen das erste Dokument Mehvish
als Wert von name.first
enthält, während das zweite Dokument Raza
als Wert des Felds name.last
enthält . Beide Dokumente werden also aus der Ergebnismenge ausgeschlossen, und wir haben nichts.
Verwenden Sie den Operator $nin
mit der Methode find()
, um ein Array in MongoDB abzufragen
Beispielcode:
db.students.find(
{ "courses": { $nin: ["JavaScript", "Networking", "Psychology"] }},
{ "courses": 1, "department": 1, "_id":0}
).pretty();
Ausgabe:
{
"department" : "Computer Science",
"courses" : [
"Python",
"Java",
"Machine Learning",
"Data Science"
]
}
Verstehen Sie diese Ausgabe sorgfältig. In dieser Ausgabe enthält das Feld Kurs
ein Array ohne Element, das dem Wert im angegebenen Array für den Operator $nin
entspricht.
Das gesamte Dokument, in dem ein Feld ein Array mit Elementen enthält, die gleich JavaScript
, Networking
oder Psychology
sind, wird aus der Ergebnismenge ausgeschlossen.
Verwenden Sie den $nin
-Operator mit der find()
-Methode, um ein Array von Dokumenten in MongoDB abzufragen
Achten Sie genau auf das Feld contact
, das wir beim Füllen der Sammlung students
zu Beginn dieses Tutorials verwendet haben. Es enthält eine Reihe von Dokumenten, wobei jedes Dokument ein eingebettetes (verschachteltes) Dokument hat.
Wie kann man das mit dem Operator $nin
abfragen? Siehe das unten angegebene Beispiel.
db.students.find(
{ "contact.phone.type": { $nin: ["cell"] }},
{ "contact": 1, "department": 1, "_id":0}
).pretty();
Ausgabe:
{
"department" : "Information Technology",
"contact" : [
{
"phone" : {
"type" : "landline",
"number" : "111-444-5555"
}
},
{
"mail" : {
"type" : "personal",
"email" : "aftab@hotmail.com"
}
}
]
}
Verwenden Sie den Vergleichsoperator $nin
mit der Methode update()
, um einen Feldwert in MongoDB zu aktualisieren
Beispielcode:
db.students.update(
{ "joining_year": {$nin: [2011,2014]}},
{ $set: {"joining_year": 2000}}
);
In diesem Code-Snippet rufen wir die Dokumente ab, bei denen joining_year
weder 2014
noch 2011
ist, und setzen dann den Wert von joining_year
auf 2000
. Verwenden Sie als Nächstes den folgenden Befehl, um das aktualisierte Dokument anzuzeigen.
db.students.find().pretty()
Verwendung von den Operator $nin
mit regulären Ausdrücken in MongoDB
Beispielcode:
var array_of_regex = [/Data+/];
db.students.find(
{ "courses": {$nin: array_of_regex}},
{"name":1, "courses":1, "department":1, "_id":0}
).pretty();
Ausgabe:
{
"name" : {
"first" : "Aftab",
"last" : "Raza"
},
"department" : "Information Technology",
"courses" : [
"Python",
"JavaScript",
"Information Security"
]
}
Für dieses Beispiel erstellen wir ein Array, das verschiedene reguläre Ausdrücke enthalten kann. Im Moment haben wir nur einen regulären Ausdruck.
Warum müssen wir ein Array von Regexes erstellen? Das liegt daran, dass $nin
ein Array zum Vergleichen benötigt.