$ - Amazon DocumentDB
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

$

The $ projection operator limits the contents of an array field to return only the first element that matches the query condition. It is used to project a single matching array element.

Parameters

  • field.$: The array field with the positional operator to project the first matching element.

Example (MongoDB Shell)

The following example demonstrates using the $ projection operator to return only the matching array element.

Create sample documents

db.students.insertMany([ { _id: 1, name: "Alice", grades: [85, 92, 78, 95] }, { _id: 2, name: "Bob", grades: [70, 88, 92, 65] }, { _id: 3, name: "Charlie", grades: [95, 89, 91, 88] } ]);

Query example

db.students.find( { grades: { $gte: 90 } }, { name: 1, "grades.$": 1 } );

Output

{ "_id" : 1, "name" : "Alice", "grades" : [ 92 ] } { "_id" : 2, "name" : "Bob", "grades" : [ 92 ] } { "_id" : 3, "name" : "Charlie", "grades" : [ 95 ] }

In this example, only the first grade that is greater than or equal to 90 is returned for each student.

Code examples

To view a code example for using the $ projection operator, choose the tab for the language that you want to use:

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.find( { grades: { $gte: 90 } }, { projection: { name: 1, "grades.$": 1 } } ).toArray(); console.log(JSON.stringify(result, null, 2)); 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.find( {'grades': {'$gte': 90}}, {'name': 1, 'grades.$': 1} )) print(result) client.close() example()