Get some objects from array of objects in a document (mongoose)

haim brandesdorfer

I want to get some objects from array of objects in a mongodb document my document looks something like this

{
    movieDetails: {
        movieId: 333,
        movieName: "movie",
    },
    Dates: [
        {
            Date: " 01/07/2021",
            TheaterId: 12,
            Is3D: "false",
        },
        {
            Date: " 09/07/2021",
            TheaterId: 13,
            Is3D: "false",
        },
        {
            Date: " 03/07/2021",
            TheaterId: 12,
            Is3D: "false",
        }
    ]
}

I want to get only the objects where the movieId is equal to 333 and TheaterId is 12 my result should look like this

 [
        {
            Date: " 01/07/2021",
            TheaterId: 12,
            Is3D: "false",
        },
        {
            Date: " 03/07/2021",
            TheaterId: 12,
            Is3D: "false",
        }
 ]

I tried this

const dates = await Movie.find("movieDetails.movieId": 333).select({ Dates: {$elemMatch: {TheaterId: 12}}});

But it returns only the first object if anyone can help me with this I will be very grateful

J.F.

According to $elemMatch docs:

The $elemMatch operator limits the contents of an field from the query results to contain only the first element matching the $elemMatch condition.

So you can use this aggregation pipeline using $filter into a $project stage like this:

Movie.aggregate([
  {
    "$match": {
      "movieDetails.movieId": 333
    }
  },
  {
    "$project": {
      "movieDetails": 1,
      "Dates": {
        "$filter": {
          "input": "$Dates",
          "as": "d",
          "cond": {
            "$eq": [
              "$$d.TheaterId",
              12
            ]
          }
        }
      }
    }
  }
])

Example here

Or this another pipeline (I prefer using $filter)

Movie.aggregate([
  {
    "$match": {
      "movieDetails.movieId": 333
    }
  },
  {
    "$unwind": "$Dates"
  },
  {
    "$match": {
      "Dates.TheaterId": 12
    }
  },
  {
    "$group": {
      "_id": "$_id",
      "movieDetails": {
        "$first": "$movieDetails"
      },
      "Dates": {
        "$push": "$Dates"
      }
    }
  }
])

Example here

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

How to get an array of objects from a Firestore document

Mongoose - How to retrieve an array of objects from each document in collection?

Get Slice of objects form mongoose Array of Objects

How to get the objects inside an array of objects which is inside an document in mongoose/mongodb?

How to populate document nested in array of objects in Mongoose?

Mongoose to get the exact object from a nested array of objects

how to get objects from array by value inside desired object by mongoose

Get an element from an array of objects with an id in mongodb using nodejs and mongoose

Get random item from some objects in Array Javascript

Javascript get array of objects from array of objects in array of objects

get object with the matching objects in sub array in mongoose

Querying from [array of objects] with mongoose find

Mongoose cant fetch all objects from array

Mongoose $pull is not removing object from an array of objects

Render array of objects from Mongoose in React

Select specifics items from array objects in mongoose

How to get value from objects in array of objects?

Javascript: Get the subsets of objects from an array of objects

Lodash get the removed objects from array of objects

How to update multiple objects in array in a single mongodb document using mongoose

mongoose update on array of objects

Updating an array of objects with Mongoose

Mongoose schema array of objects

Mongoose not saving array of objects

Mongoose populate array of objects

Get appropriate objects from array

Get an array from nested objects

Get array of objects from URLSearchParams

Remove some properties from array of javascript objects

TOP Ranking

  1. 1

    Failed to listen on localhost:8000 (reason: Cannot assign requested address)

  2. 2

    Loopback Error: connect ECONNREFUSED 127.0.0.1:3306 (MAMP)

  3. 3

    How to import an asset in swift using Bundle.main.path() in a react-native native module

  4. 4

    pump.io port in URL

  5. 5

    Compiler error CS0246 (type or namespace not found) on using Ninject in ASP.NET vNext

  6. 6

    BigQuery - concatenate ignoring NULL

  7. 7

    ngClass error (Can't bind ngClass since it isn't a known property of div) in Angular 11.0.3

  8. 8

    ggplotly no applicable method for 'plotly_build' applied to an object of class "NULL" if statements

  9. 9

    Spring Boot JPA PostgreSQL Web App - Internal Authentication Error

  10. 10

    How to remove the extra space from right in a webview?

  11. 11

    java.lang.NullPointerException: Cannot read the array length because "<local3>" is null

  12. 12

    Jquery different data trapped from direct mousedown event and simulation via $(this).trigger('mousedown');

  13. 13

    flutter: dropdown item programmatically unselect problem

  14. 14

    How to use merge windows unallocated space into Ubuntu using GParted?

  15. 15

    Change dd-mm-yyyy date format of dataframe date column to yyyy-mm-dd

  16. 16

    Nuget add packages gives access denied errors

  17. 17

    Svchost high CPU from Microsoft.BingWeather app errors

  18. 18

    Can't pre-populate phone number and message body in SMS link on iPhones when SMS app is not running in the background

  19. 19

    12.04.3--- Dconf Editor won't show com>canonical>unity option

  20. 20

    Any way to remove trailing whitespace *FOR EDITED* lines in Eclipse [for Java]?

  21. 21

    maven-jaxb2-plugin cannot generate classes due to two declarations cause a collision in ObjectFactory class

HotTag

Archive