Les commandes MongoDB Find et Find One per­met­tent de localiser des documents cor­res­pon­dant aux pa­ra­mètres de recherche. Ces commandes s’utilisent aussi avec Python ou Node.js.

MongoDB Find : c’est quoi et à quoi ça sert ?

Si MongoDB vous est familier, vous savez déjà que le système de gestion de bases de données fonc­tionne un peu dif­fé­rem­ment des bases de données re­la­tion­nelles clas­siques, comme par exemple MySQL. Certes, MongoDB permet aussi de créer des bases de données. Cependant, ces données sont stockées dans des documents, et non des tables, qui sont à leur tour regroupés en col­lec­tions. Dans une telle con­fi­gu­ra­tion, comment re­cher­cher et afficher les données cor­res­pon­dantes ? Pour cela, il existe deux commandes MongoDB : Find et Find One. Elles créent un curseur vers des documents qui cor­res­pon­dent aux critères de recherche définis.

Syntaxe de la commande Find

Pour com­prendre comment fonc­tionne la commande Find, il faut commencer par jeter un coup d’œil à sa syntaxe de base :

db.collection.find
(
<query>,</query>
<projection></projection>
)

Find inclut également deux autres pa­ra­mètres notés entre crochets. <query> est un paramètre de filtrage qui permet de spécifier la recherche, tandis que le deuxième paramètre fa­cul­ta­tif <pro­jec­tion> détermine les éléments à afficher pour chaque document cor­res­pon­dant.

Exemple de commande Find

Imaginons par exemple que vous sou­hai­tiez effectuer une recherche dans une liste de clients en France à l’aide de la commande Find de MongoDB. Cette liste se trouve dans la base de données « clients ». Pour afficher la liste de tous les documents, utilisez la commande Find sans spécifier de paramètre <pro­jec­tion> ni <query>. Voici à quoi ressemble le code :

>use clients
switched to db clients
>db.liste_france.find();
>

Le résultat est la liste complète des clients français, avec toutes les in­for­ma­tions en­re­gis­trées. Les documents sont toujours précédés de leur iden­ti­fiant unique _id, qui permet au système d’iden­ti­fier chaque document avec précision.

Exemple de commande Find avec pa­ra­mètres

S’il peut en effet être utile de lister tous les documents à l’aide de la commande Find, cela devient beaucoup plus in­té­res­sant si vous souhaitez filtrer uni­que­ment des documents spé­ci­fiques. C’est ce à quoi servent les pa­ra­mètres men­tion­nés plus haut. Imaginons que les in­for­ma­tions suivantes soient en­re­gis­trées pour chaque client et qu’elles puissent être affichées sur demande :

"_id": ObjectID,
"name": "Martin"
"adress": "152 rue des Pyrénées"
"city": "Paris"

Si votre base de données contient plusieurs centaines de clients de dif­fé­rentes villes et que vous ne souhaitez filtrer par exemple que ceux vivant à Paris, voici comment faire :

Db.liste_france.find({"city": "Paris"})

Le système filtre main­te­nant toutes les entrées de la col­lec­tion « liste_france » et n’affiche que les résultats dont la ville est Paris.

Exemple de commande Find-One

À côté de l’option générale Find, qui permet d’afficher tous ou partie des documents, le système propose aussi la fonction sup­plé­men­taire MongoDB Find One. Cette méthode affiche exac­te­ment un document cor­res­pon­dant aux critères de recherche. C’est le premier document de la liste qui est sé­lec­tionné. Si aucun document ne cor­res­pond aux critères de recherche, le résultat est « null » est affiché. La syntaxe de Find One ressemble à celle de Find :

db.collection.findOne
(
<query>,</query>
<projection></projection>
)

Dans ce cas aussi, <query> définit les critères de recherche, et <pro­jec­tion> (fa­cul­ta­tif) indique les champs des résultats à afficher. En reprenant notre exemple ci-dessus avec la commande Find One, voici comment l’utiliser :

>use clients
switched to db clients
>db.liste_france.findOne();
>

Dans ce cas, la sortie sera le premier document de votre liste de clients France.

Commande MongoDB Find avec Node.js et Python

Il est aussi possible d’utiliser MongoDB avec Node.js ou Python. Dans ce cas, la syntaxe de la commande Find est un peu dif­fé­rente, tout en con­ser­vant les mêmes fonc­tion­na­li­tés de base.

Commande Find One avec Python

L’une des dis­tri­bu­tions MongoDB les plus po­pu­laires sous Python est PyMongo. Si c’est celle que vous utilisez, la commande Find One aura la syntaxe suivante :

import pymongo
myclient = pymongo.MongoClient ("mongodb://localhost:24137/")
mydb = myclient ["clients"]
mycol = mydb ["liste_france"]
x = myco.find_one()
print ( x )

Commande Find-One avec Node.js

L’en­vi­ron­ne­ment d’exécution Ja­vaS­cript Node.js peut aussi être utilisé dans MongoDB. Si vous souhaitez y exécuter la commande Find One, voici à quoi ressemble le code :

var MongoClient = require ('mongodb').MongoClient;
var url = "mongodb://localhost:24137/";
MongoClient.connect (url, function (err, db) {
if (err) throw err;
var dbo = db.db ("mydb");
dbo.collection ("liste_france").findOne ( {}, function (err, result) {
if (err) throw err;
console-log (result.name);
db.close();
} );
} );
Conseil

Vous cherchez à trier vos documents dans MongoDB pour plus de li­si­bi­lité ? Alors gagnez du temps avec la commande MongoDB Sort !

Aller au menu principal