MongoDB-Dokumente abfragen
Zum Abfragen von MongoDB-Dokumenten wird diefind()、findOne()Methode verwendet.
Die find()-Methode zeigt alle Dokumente in einem unstrukturierten Format an.
Syntax
Das Syntaxformat zum Abfragen von Daten in MongoDB ist wie folgt:
db.collection.find(query, projection)
- query: Die Abfragekriterien, die zum Auffinden von Dokumenten verwendet werden. Standardwert ist
{}, was allen Dokumenten entspricht. - projection(Optional): Gibt die Felder an, die in den zurückgegebenen Ergebnissen enthalten sein oder ausgeschlossen werden sollen.
Alle Dokumente finden:
Beispiel
Dokumente nach Kriterien finden:
Beispiel
Dokumente nach Kriterien finden und nur die angegebenen Felder zurückgeben:
Beispiel
{ age: { $gt: 25 } },
{ name: 1, age: 1, _id: 0 }
);
Wenn Sie die Daten in einem lesbaren Format lesen möchten, können Sie die pretty()-Methode verwenden. Das Syntaxformat lautet wie folgt:
>db.col.find().pretty()
Die pretty()-Methode zeigt alle Dokumente formatiert an.
Beispiel
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB-Tutorial",
"description" : "MongoDB ist eine NoSQL-Datenbank",
"by" : "Beispiel-Tutorial",
"url" : "http://www.example.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
2、findOne()
Die Methode findOne() wird verwendet, um ein einzelnes Dokument in einer Sammlung zu finden. Wenn mehrere übereinstimmende Dokumente gefunden werden, gibt sie nur das erste zurück.
Syntax:
db.collection.findOne(query, projection)
- query: Die Abfragekriterien, die zum Auffinden von Dokumenten verwendet werden. Standardwert ist
{}, was allen Dokumenten entspricht. - projection(Optional): Gibt die Felder an, die in den zurückgegebenen Ergebnissen enthalten sein oder ausgeschlossen werden sollen.
Ein einzelnes Dokument finden:
db.myCollection.findOne({ name: "Alice" });Ein einzelnes Dokument finden und nur die angegebenen Felder zurückgeben:
db.myCollection.findOne(
{ name: "Alice" },
{ name: 1, age: 1, _id: 0 }
);
Erweiterte Abfragemethoden
1. Vergleichsoperatoren verwenden
MongoDB unterstützt verschiedene Vergleichsoperatoren, wie z. B.$gt、$lt、$gte、$lte、$eq、$neusw.
Dokumente finden, bei denen age größer als 25 ist:
db.myCollection.find({ age: { $gt: 25 } });
2. Logische Operatoren verwenden
MongoDB unterstützt verschiedene logische Operatoren wie$and, $or, $not, $norusw.
Finden Sie Dokumente, bei denen age größer als 25 ist und city "New York" ist:
Beispiel
$and: [
{ age: { $gt: 25 } },
{ city: "New York" }
]
});
3. Verwenden von regulären Ausdrücken
Reguläre Ausdrücke können für Abfragen mit Musterabgleich verwendet werden.
Finden Sie Dokumente, bei denen name mit "A" beginnt:
db.myCollection.find({ name: /^A/ });
4. Projektion
Die Projektion wird verwendet, um zu steuern, welche Felder in den Abfrageergebnissen zurückgegeben werden. Sie können entweder den Einschlussmodus oder den Ausschlussmodus verwenden.
Nur die Felder name und age zurückgeben:
Beispiel
{ age: { $gt: 25 } },
{ name: 1, age: 1, _id: 0 }
);
5. Sortierung
Sie können die Abfrageergebnisse sortieren.
Nach age in absteigender Reihenfolge sortieren:
db.myCollection.find().sort({ age: -1 });
6. Limit und Skip
Sie können die Abfrageergebnisse begrenzen und eine angegebene Anzahl von Dokumenten überspringen.
Geben Sie die ersten 10 Dokumente zurück:
db.myCollection.find().limit(10);
Überspringen Sie die ersten 5 Dokumente und geben Sie die nächsten 10 Dokumente zurück:
db.myCollection.find().skip(5).limit(10);
Beispiel
Finden Sie Dokumente, bei denen age größer als 25 und city gleich "New York" ist, geben Sie nur die Felder name und age zurück, sortieren Sie nach age in absteigender Reihenfolge und geben Sie die ersten 10 Dokumente zurück.
Beispiel
{
$and: [
{ age: { $gt: 25 } },
{ city: "New York" }
]
},
{ name: 1, age: 1, _id: 0 }
).sort({ age: -1 }).limit(10);
MongoDB vs. RDBMS: Vergleich der WHERE-Klausel
Wenn Sie mit herkömmlichen SQL-Daten vertraut sind, können Sie MongoDBs bedingte Abfrageanweisungen anhand der folgenden Tabelle besser verstehen:
| Aktion | Format | Beispiel | Ähnliche Anweisung in RDBMS |
|---|---|---|---|
| Gleich | {<key>:<value>} |
db.col.find({"by":"Example"}).pretty() |
where by = 'Example' |
| Kleiner als | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
| Kleiner als oder gleich | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
| Größer als | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
| Größer als oder gleich | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
| Ungleich | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
MongoDB AND-Bedingungen
Die find()-Methode von MongoDB kann mehrere Schlüssel akzeptieren, wobei jeder Schlüssel durch ein Komma getrennt wird, was der AND-Bedingung in herkömmlichem SQL entspricht.
Das Syntaxformat lautet wie folgt:
>db.col.find({key1:value1, key2:value2}).pretty()
Beispiel
Das folgende Beispiel verwendet denby- undtitle-Schlüssel, umExample Tutorial abzufragenMittelMongoDB TutorialDaten
> db.col.find({"by":"Example", "title":"MongoDB 教程"}).pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Example",
"url" : "http://www.example.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
Das obige Beispiel ähnelt der WHERE-Anweisung:WHERE by='Example Tutorial' AND title='MongoDB Tutorial'
MongoDB OR-Bedingungen
MongoDB OR-Bedingungsanweisungen verwenden das Schlüsselwort$or, das Syntaxformat ist wie folgt:
>db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
Beispiel
Im folgenden Beispiel demonstrieren wir das Abfragen des Schlüsselsbymit dem Wert Example Tutorial oder des Schlüsselstitlemit dem WertMongoDB TutorialDokumente.
>db.col.find({$or:[{"by":"Example"},{"title": "MongoDB 教程"}]}).pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Example",
"url" : "http://www.example.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
>
Kombination von AND und OR
Das folgende Beispiel demonstriert die kombinierte Verwendung von AND und OR, ähnlich der herkömmlichen SQL-Anweisung:'where likes>50 AND (by = 'Example Tutorial' OR title = 'MongoDB Tutorial')'
>db.col.find({"likes": {$gt:50}, $or: [{"by": "Example"},{"title": "MongoDB 教程"}]}).pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Example",
"url" : "http://www.example.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
Andere Erweiterungen