首页 > 解决方案 > Mongoose:按嵌套字段排序

问题描述

我正在尝试使用嵌套字段对数据进行排序,称为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
      })
    });
});

Book外观示例:

//Book
    {
        "_id": {
            "$oid": "1234517fe46cf86900af82f"
        },
        "chapters": [
            {                 
                "_id": {
                    "$oid": "a1"
                },
               "title": "first book",
               "orderIndex": "1",
            },
             {                 
                "_id": {
                    "$oid": "5678798be6bb05e4427ee65"
                },
               "title": "second book",
               "orderIndex": "2",
            },
            //..some more
        ]
    }

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


改变

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

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

看看这个链接

这里是sort文档。


推荐阅读