 
  Data Structure Data Structure
 Networking Networking
 RDBMS RDBMS
 Operating System Operating System
 Java Java
 MS Excel MS Excel
 iOS iOS
 HTML HTML
 CSS CSS
 Android Android
 Python Python
 C Programming C Programming
 C++ C++
 C# C#
 MongoDB MongoDB
 MySQL MySQL
 Javascript Javascript
 PHP PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to query documents by a condition on the subdocument in MongoDB?
Let us first create a collection with documents −
> db.demo394.insertOne( ...    { ... ...       details: [ ...       { ...          _id: '1', ...          startDate: '2018-01-11T07:00:00.000Z', ...          endDate: '2019-01-12T07:59:59.999Z' ...       }, ...       { ...          _id: '2', ...          startDate: '2019-01-21T07:00:00.000Z', ...          endDate: '2020-01-04T07:59:59.999Z' ...       } ...    ] ... } ... ); {    "acknowledged" : true,    "insertedId" : ObjectId("5e5e716817aa3ef9ab8ab202") } Display all documents from a collection with the help of find() method −
> db.demo394.find();
This will produce the following output −
{    "_id" : ObjectId("5e5e716817aa3ef9ab8ab202"), "details" : [       { "_id" : "1", "startDate" : "2018-01-11T07:00:00.000Z", "endDate" : "2019-01-12T07:59:59.999Z" },       { "_id" : "2", "startDate" : "2019-01-21T07:00:00.000Z", "endDate" : "2020-01-04T07:59:59.999Z" }    ] } Following is how to query documents by a condition on the subdocument −
> db.demo394.find({ ...    $expr: { ...       $let: { ...          vars: { "d": { $arrayElemAt: [ "$details", -1 ] } }, ...          in: { $eq: [ "$$d.endDate", "2020-01-04T07:59:59.999Z" ] } ...       } ...    } ... }) This will produce the following output −
{    "_id" : ObjectId("5e5e716817aa3ef9ab8ab202"), "details" : [       { "_id" : "1", "startDate" : "2018-01-11T07:00:00.000Z", "endDate" : "2019-01-12T07:59:59.999Z" },       { "_id" : "2", "startDate" : "2019-01-21T07:00:00.000Z", "endDate" : "2020-01-04T07:59:59.999Z" }    ] }Advertisements
 