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" }


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow