Python MongoDB Dokumente abfragen
In MongoDB werden die Methoden find und find_one verwendet, um Daten in Sammlungen abzufragen, ähnlich wie die SELECT-Anweisung in SQL.
Die in diesem Artikel verwendeten Testdaten sind wie folgt:

Ein Dokument abfragen
Wir können die Methodefind_one()verwenden, um ein Dokument in einer Sammlung abzufragen.
Abfrage des ersten Dokuments in der Sammlungsites:
Beispiel
Das Ausgabeergebnis ist:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'alexa': '10000', 'url': 'https://www.example.com'}
Alle Dokumente in einer Sammlung abfragen
find()-Methode kann alle Daten in einer Sammlung abfragen, ähnlich derSELECT *-Operation in SQL.
Das folgende Beispiel findet in der Sammlungsitesalle Dokumente:
Beispiel
Das Ausgabeergebnis ist:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'alexa': '10000', 'url': 'https://www.example.com'}
{'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'alexa': '1', 'url': 'https://www.google.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb8'), 'name': 'Facebook', 'alexa': '10', 'url': 'https://www.facebook.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbba'), 'name': 'Github', 'alexa': '109', 'url': 'https://www.github.com'}
Bestimmte Felder abfragen
Wir können die find()-Methode verwenden, um bestimmte Felder abzufragen, indem wir den entsprechenden Wert des zurückzugebenden Feldes auf 1 setzen.
Beispiel
Das Ausgabeergebnis ist:
{'name': 'EXAMPLE', 'alexa': '10000'}
{'name': 'Google', 'alexa': '1'}
{'name': 'Taobao', 'alexa': '100'}
{'name': 'QQ', 'alexa': '101'}
{'name': 'Facebook', 'alexa': '10'}
{'name': '知乎', 'alexa': '103'}
{'name': 'Github', 'alexa': '109'}
Außer bei _id können Sie nicht sowohl 0 als auch 1 in einem Objekt angeben. Wenn Sie ein Feld auf 0 setzen, sind alle anderen 1, und umgekehrt.
Das folgende Beispiel gibt alle Felder außer dem Feld alexa zurück:
Beispiel
Das Ausgabeergebnis ist:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'url': 'https://www.example.com'}
{'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'url': 'https://www.google.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb8'), 'name': 'Facebook', 'url': 'https://www.facebook.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'url': 'https://www.zhihu.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbba'), 'name': 'Github', 'url': 'https://www.github.com'}
Der folgende Code meldet einen Fehler, wenn sowohl 0 als auch 1 angegeben sind:
Beispiel
Der Fehlerinhalt sieht ungefähr wie folgt aus:
... pymongo.errors.OperationFailure: Projection cannot have a mix of inclusion and exclusion. ...
Abfrage mit angegebenen Bedingungen
Wir können Parameter infind()festlegen, um Daten zu filtern.
Das folgende Beispiel findet Daten, bei denen das Feld name "EXAMPLE" ist:
Beispiel
Das Ausgabeergebnis ist:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'alexa': '10000', 'url': 'https://www.example.com'}
Erweiterte Abfrage
In Abfragebedingungsanweisungen können wir auch Modifikatoren verwenden.
Das folgende Beispiel liest Daten, bei denen der erste Buchstabe des Feldes name einen ASCII-Wert größer als "H" hat. Die Bedingung des Größer-als-Modifikators ist{"$gt": "H"} :
Beispiel
Das Ausgabeergebnis ist:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'alexa': '10000', 'url': 'https://www.example.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb7'), 'name': 'QQ', 'alexa': '101', 'url': 'https://www.qq.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb9'), 'name': '知乎', 'alexa': '103', 'url': 'https://www.zhihu.com'}
Abfrage mit regulären Ausdrücken
Wir können auch reguläre Ausdrücke als Modifikatoren verwenden.
Modifikatoren für reguläre Ausdrücke werden nur zum Durchsuchen von String-Feldern verwendet.
Das folgende Beispiel liest Daten, bei denen der erste Buchstabe des Feldes name "R" ist. Die Bedingung des Modifikators für reguläre Ausdrücke ist{"$regex": "^R"} :
Beispiel
Das Ausgabeergebnis ist:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'alexa': '10000', 'url': 'https://www.example.com'}
Eine angegebene Anzahl von Datensätzen zurückgeben
Wenn wir die Abfrageergebnisse auf eine angegebene Anzahl von Datensätzen begrenzen möchten, können wir dielimit()Methode verwenden, die nur einen numerischen Parameter akzeptiert.
Das folgende Beispiel gibt 3 Dokumentdatensätze zurück:
Beispiel
Das Ausgabeergebnis ist:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'alexa': '10000', 'url': 'https://www.example.com'}
{'_id': ObjectId('5b2369cac315325f3698a1cf'), 'name': 'Google', 'alexa': '1', 'url': 'https://www.google.com'}
{'_id': ObjectId('5b236aa9c315325f5236bbb6'), 'name': 'Taobao', 'alexa': '100', 'url': 'https://www.taobao.com'}
Andere Erweiterungen
Python MongoDB