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.