【问题标题】:Spring Data MongoDB Sorting not working as expectedSpring Data MongoDB 排序未按预期工作
【发布时间】:2017-07-24 14:02:42
【问题描述】:

示例 Mongodb 集合

[
{"sno":4,"data":"data-4"},
{"sno":3,"data":"data-3"},
{"sno":2,"data":"data-2"},
{"sno":1,"data":"data-1"},
]

Spring 数据代码:

PageRequest pageable = new PageRequest(page--, size);
return dao.findAll(pageable);

如果我将 page 作为 1 并将 size 作为 1 传递,我将得到以下结果,这是正确的。

{"sno":4,"data":"data-4"}

如果我将 page 作为 1 并将 size 作为 2 传递,请参见以下内容 预期:

{"sno":4,"data":"data-4"}
{"sno":3,"data":"data-3"}

实际: {"sno":3,"data":"data-3"} {"sno":2,"data":"data-2"}

它跳过了第一条记录,看起来它是 Spring Data for mongodb 实现的问题。我已经尝试在可分页中使用显式 Sort(DESC,"sno"),结果仍然相同。

有人遇到过这个问题吗?

【问题讨论】:

    标签: mongodb-query spring-data-mongodb


    【解决方案1】:

    其实page是从0开始的。

    我已经尝试了与您相同的数据,实际上如果我打电话:

    PageRequest pageable = new PageRequest(0, 1, new Sort(Sort.Direction.DESC, "sno"));
    dao.findAll(pageable);
    

    我会得到:

    {"sno":4,"data":"data-4"}
    

    如果您需要前两条记录才能使用

    new PageRequest(0, 2, new Sort(Sort.Direction.DESC, "sno"));
    

    【讨论】:

    • 我也是这么想的,但我得到了不同的结果。这就是在这里提出这个问题的原因。{"sno":3,"data":"data-3"} {"sno":2,"data":"data-2"}
    • 你有什么 mongo db, spring data 版本?
    • 对不起,这是我的错误。我使用了错误的页面参数减量作为其从零开始。 PageRequest pageable = new PageRequest(--page, size); PageRequest pageable = new PageRequest(page--, size);
    猜你喜欢
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2016-02-27
    • 1970-01-01
    相关资源
    最近更新 更多