Python Mongodb Interroger des documents
Dans MongoDB, les méthodes find et find_one sont utilisées pour interroger des données dans des collections, de manière similaire à l'instruction SELECT en SQL.
Les données de test utilisées dans cet article sont les suivantes :

Interroger un document
Nous pouvons utiliserfind_one()comme méthode pour interroger un document dans une collection.
Rechercher danssitesle premier document de la collection :
Exemple
Le résultat de sortie est:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'alexa': '10000', 'url': 'https://www.example.com'}
Interroger tous les documents d'une collection
find()peut interroger toutes les données d'une collection, similaire à l'opérationSELECT *en SQL.
L'exemple suivant trouvesitestous les documents dans la collection :
Exemple
Le résultat de sortie est:
{'_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'}
Interroger des champs spécifiques
Nous pouvons utiliser la méthode find() pour interroger des champs spécifiques, en définissant la valeur correspondante du champ à renvoyer à 1.
Exemple
Le résultat de sortie est:
{'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'}
À l'exception de _id, vous ne pouvez pas spécifier à la fois 0 et 1 dans un même objet. Si vous définissez un champ sur 0, tous les autres sont à 1, et inversement.
L'exemple suivant renvoie tous les champs sauf le champ alexa :
Exemple
Le résultat de sortie est:
{'_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'}
Le code suivant signalera une erreur si 0 et 1 sont tous deux spécifiés:
Exemple
Le contenu de l'erreur est à peu près le suivant :
... pymongo.errors.OperationFailure: Projection cannot have a mix of inclusion and exclusion. ...
Requête avec des conditions spécifiées
Nous pouvons définir des paramètres dansfind()pour filtrer les données.
L'exemple suivant recherche les données où le champ name est "EXAMPLE":
Exemple
Le résultat de sortie est:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'alexa': '10000', 'url': 'https://www.example.com'}
Requête avancée
Dans les instructions de condition de requête, nous pouvons également utiliser des modificateurs.
L'exemple suivant lit les données où la première lettre du champ name a une valeur ASCII supérieure à "H". La condition du modificateur supérieur à est{"$gt": "H"} :
Exemple
Le résultat de sortie est:
{'_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'}
Requête utilisant des expressions régulières
Nous pouvons également utiliser des expressions régulières comme modificateurs.
Les modificateurs d'expressions régulières ne sont utilisés que pour rechercher dans des champs de chaînes.
L'exemple suivant lit les données où la première lettre du champ name est "R". La condition du modificateur d'expression régulière est{"$regex": "^R"} :
Exemple
Le résultat de sortie est:
{'_id': ObjectId('5b23696ac315325f269f28d1'), 'name': 'EXAMPLE', 'alexa': '10000', 'url': 'https://www.example.com'}
Retourner un nombre spécifié d'enregistrements
Si nous voulons limiter les résultats de la requête à un nombre spécifié d'enregistrements, nous pouvons utiliser la méthodelimit(), qui accepte uniquement un paramètre numérique.
L'exemple suivant retourne 3 enregistrements de documents :
Exemple
Le résultat de sortie est:
{'_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'}
Autres extensions
Python MongoDB