Visit complete MongoDB roadmap

← Back to Topics List

$project

The $project is a projection operator in MongoDB, which is used during the aggregation process to reshape/output a document by specifying the fields to include or exclude. This is particularly helpful when you need to limit the amount of data retrieved from the database or modify the structure of the result.

Using $project

The general syntax for the $project operator is:

{ $project: { field1: expression1, field2: expression2, ... } }

The key-value pairs within the $project operator specify the field names to be included in the final result, and their corresponding expressions help define how the output value would be computed.

Example

Let’s assume we have a “users” collection with documents that look like this:

{
  "_id": 1,
  "name": "John Doe",
  "posts": [
    { "title": "Sample Post 1", "views": 43 },
    { "title": "Sample Post 2", "views": 89 }
  ]
}

If you want to retrieve only the name and the total number of posts for each user, you can execute the following aggregate query with a $project operator:

db.users.aggregate([
  {
    $project: {
      name: 1,
      totalPosts: { $size: '$posts' },
    },
  },
]);

Here, we are including the name field and calculating the totalPosts value with the $size operator. The output will look like this:

{
  "_id": 1,
  "name": "John Doe",
  "totalPosts": 2
}

Excluding Fields

By default, using a field with a value of 0 (zero) within the $project operator will exclude all the other fields except for the specified ones. It’s important to note that the _id field is always included in the output unless explicitly excluded by specifying _id: 0.

For example, if you only want to exclude the “posts” field, you can do that as follows:

db.users.aggregate([
  {
    $project: {
      posts: 0,
    },
  },
]);

Conclusion

The $project operator is a powerful tool in MongoDB’s aggregation framework that helps you manage the shape and size of the output documents. By understanding and leveraging its capabilities, you can effectively optimize your queries and reduce the amount of unnecessary data transfer in your application.

Community

roadmap.sh is the 6th most starred project on GitHub and is visited by hundreds of thousands of developers every month.

Roadmaps Best Practices Guides Videos Store YouTube

roadmap.sh by Kamran Ahmed

Community created roadmaps, articles, resources and journeys to help you choose your path and grow in your career.

© roadmap.sh · FAQs · Terms · Privacy

ThewNewStack

The leading DevOps resource for Kubernetes, cloud-native computing, and the latest in at-scale development, deployment, and management.