为了账号安全,请及时绑定邮箱和手机立即绑定

在 Springdata MongoDB 中按数组值排序和使用分页查询 mongoDB

在 Springdata MongoDB 中按数组值排序和使用分页查询 mongoDB

月关宝盒 2022-06-15 17:17:37
我正在尝试按数组值(除了其他字段)查询排序的 mongoDB 集合,并且结果也需要分页。排序不适用于数组值,但适用于其他字段。这是代码:sortBy = "programInstance.title.descriptions[0].value";PageRequest pageRequest = = PageRequest.of(filter.getPageNumber(), filter.getPageSize(),                    new Sort("DESC".equalsIgnoreCase(filter.getSortOrder()) ? Sort.Direction.DESC : Sort.Direction.ASC, sortBy));Page<Offer> st = new PageImpl<>(mongoTemplate.find(query.with(pageRequest),Offer.class), pageRequest, pageCount);很感谢任何形式的帮助..
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

它成功地使用了这个表达式 sortBy = "programInstance.title.descriptions.0.value";



查看完整回答
反对 回复 2022-06-15
?
四季花海

TA贡献1811条经验 获得超5个赞

//One or two records from your collection

const data = [{

  name: 'abc',

  place: 'US',

  zone: 'Pacific'

}, {

  name: 'xyz',

  place: 'PK',

  zone: 'Asia'

}, ]

const fields = Object.keys(data[0]);

console.log("Fields in collection: ",fields);

const sortBy = fields[0];

console.log("Sort By: ", sortBy);

//const sort = new Sort("DESC".equalsIgnoreCase(filter.getSortOrder()) ? //Sort.Direction.DESC : Sort.Direction.ASC, sortBy);

//PageRequest pageRequest = = PageRequest.of(filter.getPageNumber(), //filter.getPageSize(), sort);

//Page < Offer > st = new PageImpl < > //(mongoTemplate.find(query.with(pageRequest), Offer.class), pageRequest, //pageCount);


sort 参数是一个value(字符串类型),在其上执行排序,您不能传递需要进一步评估(在您的情况下)以获取值的字符串。而是直接将您的值保存到您的sortBy变量中,然后传递sortBy给您的查询。


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 263 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信