【问题标题】:mongoDB sorting not working with skip and limitmongoDB排序不适用于跳过和限制
【发布时间】:2021-06-30 08:53:59
【问题描述】:

我正在使用查询从 mongoDB 集合中查找产品。我正在使用带有 skip() 和 limit() 的不同查询过滤器,每当我使用 sort 时,一切都运行良好,它不会对记录“asc”和“desc”顺序进行排序。

这是我的代码

Products.find(filter)
        .sort({ column: order })
        .skip(parseInt(pageNumber, 10) * parseInt(nPerPage, 10))
        .limit(parseInt(nPerPage, 10));

【问题讨论】:

  • 用NodeJS驱动看sort的用法。

标签: node.js mongodb express


【解决方案1】:

您的代码将根据名为“column”的列对结果进行排序,您需要提供动态属性。

以下是使用动态属性创建排序对象然后在查询中使用它的一种方法。

let sort = {};
sort[column] = order;

Products.find(filter)
        .sort(sort)
        .skip(parseInt(pageNumber, 10) * parseInt(nPerPage, 10))
        .limit(parseInt(nPerPage, 10));

你也可以试试这个方法:

Products.find(filter)
        .sort({[column]: order })
        .skip(parseInt(pageNumber, 10) * parseInt(nPerPage, 10))
        .limit(parseInt(nPerPage, 10));

【讨论】:

    【解决方案2】:

    你使用过 { column_name: 1, -1 } 之类的 .sort({ name: 1}) 吗?

    【讨论】:

    • 是的,“列”和“顺序”是传递的动态值。
    • function(column, order){ Products.find(filter) .sort({ column: order }) .skip(parseInt(pageNumber, 10) * parseInt(nPerPage, 10)) .limit( parseInt(nPerPage, 10)); } 类似的东西
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多