Aperçu du chapitre
Ce chapitre présente comment définir le retour de champs spécifiques dans les requêtes MongoDB au lieu de renvoyer toutes les données de champ.
Données de test
Insérez quelques données dans la collection inventory
db.inventory.insertMany( [
{ item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
{ item: "notebook", status: "A", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
{ item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
{ item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
{ item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
Format
{<champ>: 1 ou 0}
Explication:
-
- nom du champ - 1 représente le retour du champ, 0 représente l'exclusion du champ (c'est-à-dire, ne pas le renvoyer)
Astuce : Il est également acceptable d'utiliser true/false à la place de 1 et 0.
Retour des champs spécifiés
Définissez quels champs retourner via le deuxième paramètre de la fonction find.
db.inventory.find( { status: "A" }, { item: 1, status: 1 } )
Explication :
- Interroge les documents où le statut est satisfait par A.
- Renvoie les champs _id, item et status.
Astuce : Le champ _id est renvoyé par défaut.
Équivalent SQL :
SELECT item, status from inventory WHERE status = "A"
Exclure les champs spécifiés
db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )
Explication :
- Interroge les documents où le statut est satisfait par A.
- Renvoie toutes les données sauf les champs item et status.
Retour des champs spécifiés dans les documents imbriqués
db.inventory.find(
{ status: "A" },
{ item: 1, status: 1, "size.uom": 1 }
)
Explication :
- size.uom représente le retour du champ uom sous size.