MongoDB
Querying for Data (Démarrage)
Recherche…
Introduction
Exemples d'interrogation de base
Trouver()
récupérer tous les documents d'une collection
db.collection.find({});
récupérer des documents dans une collection en utilisant une condition (similaire à WHERE dans MYSQL)
db.collection.find({key: value});
example
db.users.find({email:"[email protected]"});
récupérer des documents dans une collection en utilisant des conditions booléennes (opérateurs de requête)
//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 } } )
plus d'opérations booléennes et des exemples peuvent être trouvés ici
REMARQUE: find () continuera à rechercher la collection même si une correspondance de document a été trouvée. Par conséquent, elle est inefficace dans une collection volumineuse, mais en modélisant soigneusement vos données et / ou en utilisant des index, vous pouvez augmenter l'efficacité de la recherche ( )
FindOne ()
db.collection.findOne({});
La fonctionnalité d'interrogation est similaire à find (), mais cela mettra fin à l'exécution au moment où elle trouvera un document correspondant à sa condition. Si elle est utilisée avec un objet vide, elle ira chercher le premier document et le renverra. Documentation de api findOne () mongodb
Document de requête - Utilisation des conditions AND, OR et IN
Tous les documents de la collection des 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
}
Similaire
mySql
Requête de la commande ci-dessus.SELECT * FROM students;
db.students.find({firstName:"Prosen"});
{ "_id" : ObjectId("58f2547804951ad51ad206f5"), "studentNo" : "1", "firstName" : "Prosen", "lastName" : "Ghosh", "age" : "23" }
Similaire
mySql
Requête de la commande ci-dessus.SELECT * FROM students WHERE firstName = "Prosen";
ET requêtes
db.students.find({
"firstName": "Prosen",
"age": {
"$gte": 23
}
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Similaire
mySql
Requête de la commande ci-dessus.SELECT * FROM students WHERE firstName = "Prosen" AND age >= 23
Ou des requêtes
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 }
Similaire
mySql
Requête de la commande ci-dessus.SELECT * FROM students WHERE firstName = "Prosen" OR age >= 23
Et OU questions
db.students.find({
firstName : "Prosen",
$or : [
{age : 23},
{age : 25}
]
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Similaire mySql Requête de la commande ci-dessus.
SELECT * FROM students WHERE firstName = "Prosen" AND age = 23 OR age = 25;
Requêtes IN Ces requêtes peuvent améliorer l'utilisation multiple des requêtes OR
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 }
Requête mySql similaire à la commande ci-dessus
select * from students where lastName in ('Ghosh', 'Amin')
Méthode find () avec Projection
La syntaxe de base de la méthode find()
avec projection est la suivante
> db.COLLECTION_NAME.find({},{KEY:1});
Si vous souhaitez afficher tous les documents sans le champ age, la commande est la suivante
db.people.find({},{age : 0});
Si vous voulez afficher tous les documents dans le champ d'âge, la commande est la suivante
Méthode Find () avec Projection
Dans MongoDB, la projection consiste à sélectionner uniquement les données nécessaires plutôt que de sélectionner la totalité des données d’un document.
La syntaxe de base de la méthode find()
avec projection est la suivante
> db.COLLECTION_NAME.find({},{KEY:1});
Si vous souhaitez afficher tous les documents sans le champ d'âge, la commande est la suivante
> db.people.find({},{age:0});
Si vous souhaitez afficher uniquement le champ d'âge, la commande est la suivante
> db.people.find({},{age:1});
Remarque: le champ _id
est toujours affiché lors de l'exécution de la méthode find()
, si vous ne souhaitez pas utiliser ce champ, vous devez le définir sur 0
.
> db.people.find({},{name:1,_id:0});
Remarque: 1
est utilisé pour afficher le champ tandis que 0
est utilisé pour masquer les champs.
limiter, ignorer, trier et compter les résultats de la méthode find ()
Semblable aux méthodes d'agrégation également par la méthode find (), vous avez la possibilité de limiter, ignorer, trier et compter les résultats. Disons que nous avons la collection suivante:
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"}
])
Pour lister la collection:
db.test.find({})
Reviendra:
{ "_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" }
Pour sauter les 3 premiers documents:
db.test.find({}).skip(3)
Reviendra:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
Pour trier par ordre décroissant du nom du champ:
db.test.find({}).sort({ "name" : -1})
Reviendra:
{ "_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" }
Si vous voulez trier par ordre croissant, remplacez -1 par 1
Pour compter les résultats:
db.test.find({}).count()
Reviendra:
5
Des combinaisons de ces méthodes sont également autorisées. Par exemple, obtenir 2 documents de la collection triée par ordre décroissant en ignorant le premier 1:
db.test.find({}).sort({ "name" : -1}).skip(1).limit(2)
Reviendra:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }