首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring更改mongodb的排序字段的顺序

Spring更改mongodb的排序字段的顺序
EN

Stack Overflow用户
提问于 2019-02-11 09:52:04
回答 1查看 806关注 0票数 2

我尝试通过SpringSort对象对mongo中的数据进行排序,其中包含两个特定的字段。出于某种原因,Spring更改了“排序字段”的顺序。

我使用Spring和MongoDB data (MongoTemplate)。我使用findAll()函数获取一些记录。在mongo数据中,我有特定的索引{ "status": -1, "_id": -1 }。我想按照这个特定的索引进行排序,并为此添加了用于排序的代码:

代码语言:javascript
复制
new Sort(Sort.Direction.DESC, "status").and(new Sort(Sort.Direction.DESC, 
"_id"));

我按status字段进行排序,然后按_id字段进行排序(如索引)。

FYI:

我使用其他索引并根据它们进行排序,Spring不对我的“排序字段”排序:

代码语言:javascript
复制
{ "status": -1, "__sort_authors": 1 }

{ "status": -1, "__sort_title": 1 }

在这些情况下,Spring在Mongo查询中保存排序字段的顺序:

查询:{...}, Sort: { "status":-1, "__sort_authors":1 }

查询:{...}, Sort: { "status":-1, "__sort_title":1 }

预期的mongo查询应该是:

{ "foldersIds“:{ "$in”:“项目:6s5d4f32sd1f65”},“可用性”:“当前”},字段:{ },排序:{“状态”:-1,"_id“:-1 }

实际的mongo查询是:

{ "foldersIds“:{ "$in”:“项目:5c505594e4b0e98a6537ec9d”},“可用性”:“当前”},字段:{ },排序:{ "_id“:-1,”状态“:-1 }

也许是因为_id是主字段吗?

我想要保持排序字段的顺序。知道怎么保存秩序吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-11 19:50:01

我将通过传递一个List来显式地设置顺序,而不是调用and方法。就像这样:

代码语言:javascript
复制
ArrayList<Order> orders = new ArrayList<>();
orders.add(new Sort.Order(Sort.Direction.DESC, "status"));
orders.add(new Sort.Order(Sort.Direction.DESC, "_id"));
Sort sort = Sort.by(orders);

我之所以提出这一建议,是因为Sort.and()方法的文档只指定它合并了指定的排序,而没有指定如何或按什么顺序组合它们。希望使用List可以强制执行所需的顺序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54627796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档