MongoDB
Daten abfragen (Erste Schritte)
Suche…
Einführung
Grundlegende Abfragebeispiele
Finden()
alle Dokumente in einer Sammlung abrufen
db.collection.find({});
Abrufen von Dokumenten in einer Auflistung mithilfe einer Bedingung (ähnlich WHERE in MYSQL)
db.collection.find({key: value});
example
db.users.find({email:"[email protected]"});
Abrufen von Dokumenten in einer Sammlung unter Verwendung boolescher Bedingungen (Abfrageoperatoren)
//AND
db.collection.find( {
$and: [
{ key: value }, { key: value }
]
})
//OR
db.collection.find( {
$or: [
{ key: value }, { key: value }
]
})
//NOT
db.inventory.find( { key: { $not: value } } )
Weitere boolesche Operationen und Beispiele finden Sie hier
HINWEIS: find () durchsucht die Sammlung auch dann weiter, wenn eine Dokumentübereinstimmung gefunden wurde. Daher ist es bei Verwendung in einer großen Sammlung ineffizient. Wenn Sie jedoch Ihre Daten sorgfältig modellieren und / oder Indizes verwenden, können Sie die Suche effizienter gestalten ( )
Einen finden()
db.collection.findOne({});
Die Abfragefunktion ist ähnlich wie bei find (). Die Ausführung wird jedoch in dem Moment beendet, in dem ein Dokument gefunden wird, das mit seiner Bedingung übereinstimmt. Wenn es mit einem leeren Objekt verwendet wird, wird es das erste Dokument abrufen und zurückgeben. findOne () Mongodb-API-Dokumentation
Dokument abfragen - Verwenden von AND-, OR- und IN-Bedingungen
Alle Dokumente aus der students
.
> db.students.find().pretty();
{
"_id" : ObjectId("58f29a694117d1b7af126dca"),
"studentNo" : 1,
"firstName" : "Prosen",
"lastName" : "Ghosh",
"age" : 25
}
{
"_id" : ObjectId("58f29a694117d1b7af126dcb"),
"studentNo" : 2,
"firstName" : "Rajib",
"lastName" : "Ghosh",
"age" : 25
}
{
"_id" : ObjectId("58f29a694117d1b7af126dcc"),
"studentNo" : 3,
"firstName" : "Rizve",
"lastName" : "Amin",
"age" : 23
}
{
"_id" : ObjectId("58f29a694117d1b7af126dcd"),
"studentNo" : 4,
"firstName" : "Jabed",
"lastName" : "Bangali",
"age" : 25
}
{
"_id" : ObjectId("58f29a694117d1b7af126dce"),
"studentNo" : 5,
"firstName" : "Gm",
"lastName" : "Anik",
"age" : 23
}
Ähnliche
mySql
Abfrage des obigen Befehls.SELECT * FROM students;
db.students.find({firstName:"Prosen"});
{ "_id" : ObjectId("58f2547804951ad51ad206f5"), "studentNo" : "1", "firstName" : "Prosen", "lastName" : "Ghosh", "age" : "23" }
Ähnliche
mySql
Abfrage des obigen Befehls.SELECT * FROM students WHERE firstName = "Prosen";
UND Abfragen
db.students.find({
"firstName": "Prosen",
"age": {
"$gte": 23
}
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Ähnliche
mySql
Abfrage des obigen Befehls.SELECT * FROM students WHERE firstName = "Prosen" AND age >= 23
Oder Abfragen
db.students.find({
"$or": [{
"firstName": "Prosen"
}, {
"age": {
"$gte": 23
}
}]
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcb"), "studentNo" : 2, "firstName" : "Rajib", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcc"), "studentNo" : 3, "firstName" : "Rizve", "lastName" : "Amin", "age" : 23 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcd"), "studentNo" : 4, "firstName" : "Jabed", "lastName" : "Bangali", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dce"), "studentNo" : 5, "firstName" : "Gm", "lastName" : "Anik", "age" : 23 }
Ähnliche
mySql
Abfrage des obigen Befehls.SELECT * FROM students WHERE firstName = "Prosen" OR age >= 23
Und ODER-Anfragen
db.students.find({
firstName : "Prosen",
$or : [
{age : 23},
{age : 25}
]
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Ähnliche mySql-Abfrage des obigen Befehls.
SELECT * FROM students WHERE firstName = "Prosen" AND age = 23 OR age = 25;
IN-Abfragen Diese Abfragen können die mehrfache Verwendung von ODER-Abfragen verbessern
db.students.find(lastName:{$in:["Ghosh", "Amin"]})
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcb"), "studentNo" : 2, "firstName" : "Rajib", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcc"), "studentNo" : 3, "firstName" : "Rizve", "lastName" : "Amin", "age" : 23 }
Ähnliche mySql-Abfrage zum obigen Befehl
select * from students where lastName in ('Ghosh', 'Amin')
find () -Methode mit Projektion
Die grundlegende Syntax der find()
Methode mit Projektion lautet wie folgt
> db.COLLECTION_NAME.find({},{KEY:1});
Wenn Sie alle Dokumente ohne das Feld Alter anzeigen möchten, lautet der Befehl wie folgt
db.people.find({},{age : 0});
Wenn Sie alle Dokumente im Feld Alter anzeigen möchten, lautet der Befehl wie folgt
Find () -Methode mit Projektion
In MongoDB bedeutet Projektion, nur die erforderlichen Daten auszuwählen, anstatt die gesamten Daten eines Dokuments auszuwählen.
Die grundlegende Syntax der find()
Methode mit Projektion lautet wie folgt
> db.COLLECTION_NAME.find({},{KEY:1});
Wenn Sie alle Dokumente ohne das Feld Alter anzeigen möchten, lautet der Befehl wie folgt
> db.people.find({},{age:0});
Wenn Sie nur das Alter-Feld anzeigen möchten, lautet der Befehl wie folgt
> db.people.find({},{age:1});
Hinweis: _id
Feld _id
wird bei der Ausführung der find()
-Methode immer angezeigt. Wenn Sie dieses Feld nicht möchten, müssen Sie es auf 0
.
> db.people.find({},{name:1,_id:0});
Hinweis: Mit 1
wird das Feld angezeigt, mit 0
werden die Felder ausgeblendet.
beschränken, überspringen, sortieren und zählen Sie die Ergebnisse der find () -Methode
Ähnlich wie bei Aggregationsmethoden haben Sie auch bei find () die Möglichkeit, die Ergebnisse einzuschränken, zu überspringen, zu sortieren und zu zählen. Nehmen wir an, wir haben folgende Sammlung:
db.test.insertMany([
{name:"Any", age:"21", status:"busy"},
{name:"Tony", age:"25", status:"busy"},
{name:"Bobby", age:"28", status:"online"},
{name:"Sonny", age:"28", status:"away"},
{name:"Cher", age:"20", status:"online"}
])
Um die Sammlung aufzulisten:
db.test.find({})
Wird zurückkehren:
{ "_id" : ObjectId("592516d7fbd5b591f53237b0"), "name" : "Any", "age" : "21", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b1"), "name" : "Tony", "age" : "25", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b2"), "name" : "Bobby", "age" : "28", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
Erste 3 Dokumente überspringen:
db.test.find({}).skip(3)
Wird zurückkehren:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
Absteigend nach Feldnamen sortieren:
db.test.find({}).sort({ "name" : -1})
Wird zurückkehren:
{ "_id" : ObjectId("592516d7fbd5b591f53237b1"), "name" : "Tony", "age" : "25", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b2"), "name" : "Bobby", "age" : "28", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b0"), "name" : "Any", "age" : "21", "status" : "busy" }
Wenn Sie aufsteigend sortieren möchten, ersetzen Sie -1 durch 1
Um die Ergebnisse zu zählen:
db.test.find({}).count()
Wird zurückkehren:
5
Auch Kombinationen dieser Methoden sind zulässig. Erhalten Sie zum Beispiel 2 Dokumente aus einer absteigend sortierten Sammlung, wobei die erste 1 übersprungen wird:
db.test.find({}).sort({ "name" : -1}).skip(1).limit(2)
Wird zurückkehren:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }