0

I am a mongo beginner, I need to do a query in an array. My configuration is like this.

[
  {
    "_id": ObjectId("60845dd9746d1c7a70ca55a6"),
    "carName": "Peugeot 208",
    "image": "images/peugeot-208.webp",
    "person": "4",
    "bags": "4",
    "gear": "Manuel",
    "price": 25,
    "details": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc erat orci, gravida sed accumsan vitae, rutrum sit amet dolor. Suspendisse id diam ut lorem dapibus sollicitudin sit amet non ex. Quisque at euismod purus. Suspendisse gravida sapien ac lectus bibendum congue. Vivamus tempor ipsum id massa pellentesque, nec malesuada nibh fermentum. Cras non gravida ipsum. Mauris mollis malesuada velit ut tempus. Vivamus at velit id quam molestie lacinia. Praesent vel felis sit amet neque consectetur mollis et ut massa. Vivamus efficitur malesuada mollis. Maecenas mauris sem, laoreet eu purus luctus, lobortis maximus massa.",
    "booked": [
      {
        "_id": ObjectId("60845dd9746d1c7a70ca55a7"),
        "pickUpDate": ISODate("2021-04-30T00:00:00Z"),
        "dropOffDate": ISODate("2021-05-05T00:00:00Z")
      },
      {
        "pickUpDate": ISODate("2021-06-10T00:00:00Z"),
        "dropOffDate": ISODate("2021-06-15T00:00:00Z")
      }
    ],
    "route": "peugeot-208",
    "comments": [
      {
        "_id": ObjectId("60845dd9746d1c7a70ca55a8"),
        "body": "Bilmem ne",
        "date": "2021-04-23",
        "name": "Fiko"
      }
    ],
    "__v": 0
  },
  {
    "_id": ObjectId("6084633ba8a1eba43825eca4"),
    "carName": "Hyundai Accent",
    "image": "images/hyundai-accent.webp",
    "person": "4",
    "bags": "4",
    "gear": "Manuel",
    "price": 25,
    "details": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc erat orci, gravida sed accumsan vitae, rutrum sit amet dolor. Suspendisse id diam ut lorem dapibus sollicitudin sit amet non ex. Quisque at euismod purus. Suspendisse gravida sapien ac lectus bibendum congue. Vivamus tempor ipsum id massa pellentesque, nec malesuada nibh fermentum. Cras non gravida ipsum. Mauris mollis malesuada velit ut tempus. Vivamus at velit id quam molestie lacinia. Praesent vel felis sit amet neque consectetur mollis et ut massa. Vivamus efficitur malesuada mollis. Maecenas mauris sem, laoreet eu purus luctus, lobortis maximus massa.",
    "booked": [
      {
        "_id": ObjectId("6084633ba8a1eba43825eca5"),
        "pickUpDate": ISODate("2021-04-23T00:00:00Z"),
        "dropOffDate": ISODate("2021-05-01T00:00:00Z")
      }
    ],
    "route": "hyundai-accent",
    "comments": [
      {
        "_id": ObjectId("6084633ba8a1eba43825eca6"),
        "body": "Bilmem ne",
        "date": "2021-04-23",
        "name": "Fiko"
      }
    ],
    "__v": 0
  },
  {
    "_id": ObjectId("60846ed9a8a1eba43825eca7"),
    "carName": "Wolksvagen Polo",
    "image": "images/polo.png",
    "person": "4",
    "bags": "4",
    "gear": "Manuel",
    "price": 25,
    "details": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc erat orci, gravida sed accumsan vitae, rutrum sit amet dolor. Suspendisse id diam ut lorem dapibus sollicitudin sit amet non ex. Quisque at euismod purus. Suspendisse gravida sapien ac lectus bibendum congue. Vivamus tempor ipsum id massa pellentesque, nec malesuada nibh fermentum. Cras non gravida ipsum. Mauris mollis malesuada velit ut tempus. Vivamus at velit id quam molestie lacinia. Praesent vel felis sit amet neque consectetur mollis et ut massa. Vivamus efficitur malesuada mollis. Maecenas mauris sem, laoreet eu purus luctus, lobortis maximus massa.",
    "booked": [
      {
        "_id": ObjectId("60846ed9a8a1eba43825eca8"),
        "pickUpDate": ISODate("2021-05-10T00:00:00Z"),
        "dropOffDate": ISODate("2021-05-20T00:00:00Z")
      }
    ],
    "route": "wv-polo",
    "comments": [
      {
        "_id": ObjectId("60846ed9a8a1eba43825eca9"),
        "body": "Bilmem ne",
        "date": "2021-04-23",
        "name": "Fiko"
      }
    ],
    "__v": 0
  }
]

I want to query document that dropOffDate less than date that I send if any of dropOffDate in booked array matches the query.How can I do this query ? I've tried this query but it only returns me first matching result. Thank you very much.

db.collection.find({
  "booked": {
    $elemMatch: {
      dropOffDate: {
        $lt: ISODate("2021-06-05")
        
      }
    }
  }
})

https://mongoplayground.net/p/ULup6wNE4Pj

  • The Mongo Playground you linked shows two documents being matched. There are two separate ObjectIds, `ObjectId("6084633ba8a1eba43825eca4")` and `ObjectId("60845dd9746d1c7a70ca55a6")` – Montgomery Watts May 01 '21 at 01:36
  • Does [Retrieve only the queried element in an object array in MongoDB collection](https://stackoverflow.com/questions/3985214/retrieve-only-the-queried-element-in-an-object-array-in-mongodb-collection) help? – Joe May 01 '21 at 04:20
  • @MontgomeryWatts sorry , I have have updated the input as `ISODate("2021-06-05")`,It shows three documents being matched now.But what I want do is not bring first object `ObjectId("60845dd9746d1c7a70ca55a6")`.Because second element of booked array does not match the query. – Fikri Çetin May 01 '21 at 08:40
  • @Joe Thank you but I think this is not what I need to do. – Fikri Çetin May 01 '21 at 08:47
  • Ok, so you only want to select documents that do not contain a value greater than `ISODate("2021-06-05")`? Try running the query like that, i.e. `{$not: {$gte: ISODate("2021-06-05")}` – Joe May 01 '21 at 09:05
  • @Joe It gives me syntax error when I do like this. https://mongoplayground.net/p/eoteAR41T9f – Fikri Çetin May 01 '21 at 09:36
  • You have an extra set of curly braces after the $not – Joe May 01 '21 at 15:43

0 Answers0