$project - Amazon DocumentDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

$project

L'$projectopérateur d'Amazon DocumentDB vous permet d'inclure ou d'exclure de manière sélective des champs des documents de sortie, de transmettre des valeurs à l'étape suivante du pipeline et de calculer de nouveaux champs à partir des valeurs des documents d'entrée.

Paramètres

  • field: Le champ à inclure ou à exclure des documents de sortie peut être un chemin de champ (par exemple, « a.b.c »).

  • 1ou true : inclut le champ dans la sortie.

  • 0ou false : exclut le champ de la sortie.

Exemple (MongoDB Shell)

L'exemple suivant illustre l'utilisation de l'$projectopérateur sur la collection des étudiants.

Création d'exemples de documents

db.students.insertMany([ { "_id": 1, "name": "Alejandro Rosalez", "math": 85, "science": 92, "grade": "A" }, { "_id": 2, "name": "Carlos Salazar", "math": 78, "science": 84, "grade": "B" }, { "_id": 3, "name": "Nikhil Jayashankar", "math": 95, "science": 89, "grade": "A" }, { "_id": 4, "name": "Shirley Rodriguez", "math": 72, "science": 76, "grade": "B" } ]);

Cette requête inclut uniquement les math champs name et dans la sortie. Le _id champ est inclus par défaut sauf exclusion explicite.

db.students.aggregate([ { $project: { "name": 1, "math": 1 } } ])

Sortie

{ _id: 1, name: "Alejandro Rosalez", math: 85 } { _id: 2, name: "Carlos Salazar", math: 78 } { _id: 3, name: "Nikhil Jayashankar", math: 95 } { _id: 4, name: "Shirley Rodriguez", math: 72 }

Cette requête exclut les _id champs grade et de la sortie, affichant tous les autres champs (name,math,science).

db.students.aggregate([ { $project: { "grade": 0, "_id": 0 } } ])

Sortie

{ name: "Alejandro Rosalez", math: 85, science: 92 } { name: "Carlos Salazar", math: 78, science: 84 } { name: "Nikhil Jayashankar", math: 95, science: 89 } { name: "Shirley Rodriguez", math: 72, science: 76 }

Exemples de code

Pour afficher un exemple de code relatif à l'utilisation de la $project commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

Node.js
const { MongoClient } = require('mongodb'); async function example() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const collection = db.collection('students'); const result = await collection.aggregate([ { $project: { "name": 1, "math": 1 } } ]).toArray(); console.log(result); await client.close(); } example();
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] collection = db['students'] result = list(collection.aggregate([ { '$project': { 'name': 1, 'math': 1 } } ])) print(result) client.close() example()