Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mongoose: Sort by nested field [duplicate]

I'm trying to sort the data with nested field, called orderIndex.

router.get("/", (req, res) => {
  Book.find({ _id: req.params.id })

    .sort({ 'Book.chapters.orderIndex': "asc" }) //doesn't work

    .then(books => {
      res.render("books/index", {
        books: books
      })
    });
});

Example of what a Book looks:

//Book
    {
        "_id": {
            "$oid": "1234517fe46cf86900af82f"
        },
        "chapters": [
            {                 
                "_id": {
                    "$oid": "a1"
                },
               "title": "first book",
               "orderIndex": "1",
            },
             {                 
                "_id": {
                    "$oid": "5678798be6bb05e4427ee65"
                },
               "title": "second book",
               "orderIndex": "2",
            },
            //..some more
        ]
    }
like image 923
skylake Avatar asked Feb 11 '26 08:02

skylake


1 Answers

Change

.sort({ 'Book.chapters.orderIndex': "asc" })

To

.sort({ 'chapters.orderIndex': 1 })

Take a look at this link

Here the sort documentation.

like image 71
Alejandro Montilla Avatar answered Feb 13 '26 18:02

Alejandro Montilla



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!