Ce chapitre présente la syntaxe de base de requête de MongoDB à travers l'interpréteur mongo. Dans l'interpréteur mongo, la méthode db.collection.find() est utilisée pour interroger les données.

Préparer des données de test

Insérer quelques données dans la collection inventory.

db.inventory.insertMany([
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

Interroger tous les documents

Interroger tous les documents dans la collection inventory, {} représente une condition de requête vide.

db.inventory.find( {} )

Similaire à la déclaration SQL suivante:

SELECT * FROM inventory

Conditions d'égalité

Syntaxe:

{ champ: valeur, ... }

Exemple 1:

db.inventory.find( { status: "D" } )

Similaire à la déclaration SQL suivante:

SELECT * FROM inventory WHERE status = "D"

Exemple 2: Interrogation de champ imbriqué, utilisez un point (.) pour connecter les champs des documents imbriqués.

db.inventory.find( { "size.uom": "in" } )

Similaire à la déclaration SQL suivante:

SELECT * FROM inventory WHERE size.uom = "in"

Remarque: Les documents MongoDB sont stockés au format JSON, ils prennent en charge l'utilisation de champs imbriqués comme conditions de requête.

Utilisation des opérateurs de requête

MongoDB prend en charge une variété d'opérateurs de requête pour implémenter diverses requêtes complexes. Syntaxe:

{ <champ1>: { <opérateur1>: <valeur1> }, ... }

Explication:

  • champ1: nom du champ
  • opérateur1: opérateur
  • valeur1: paramètre de l'opérateur

Exemple de l'opérateur $in:

db.inventory.find( { status: { $in: [ "A", "D" ] } } )

Similaire à la requête SQL suivante avec l'opérateur "in":

SELECT * FROM inventory WHERE status in ("A", "D")

Remarque: Pour plus de détails sur les opérateurs, veuillez vous référer à la section suivante sur les détails de la requête MongoDB.

Condition ET

Tout comme en SQL, MongoDB prend également en charge la condition ET.

Exemple:

// Entrer plusieurs conditions consécutivement, et connecter les conditions en utilisant ET
db.inventory.find( { status: "A", item: "postcard"} )

Similaire à la déclaration SQL suivante:

SELECT * FROM inventory WHERE status = "A" AND item = "postcard"

Condition OU

Tout comme en SQL, MongoDB prend également en charge la condition OU, qui est implémentée à travers l'opérateur $or.

Syntaxe:

{
	$or: [
		{condition1},
		{condition2},
		.....
	]
}

Exemple:

db.inventory.find( { $or: [ { status: "A" }, { item: "postcard"} ] } )

Similaire à la déclaration SQL suivante:

SELECT * FROM inventory WHERE status = "A" OR item = "postcard"

Combinaison des conditions ET et OU

Tout comme en SQL, MongoDB peut combiner des conditions de requête complexes en utilisant ET et OU.

Exemple:

db.inventory.find( {
     status: "A",
     $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )

Ici, l'opérateur $lt pour moins que et la correspondance par expression régulière sont utilisés.

Cela est similaire à la déclaration SQL suivante:

SELECT * FROM inventory WHERE status = "A" AND ( qty  < 30 or item like 'p%')

Astuce : Pour une explication détaillée des conditions de requête MongoDB, veuillez vous référer aux chapitres suivants.