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

我正在尝试按数组值(除了其他字段)查询排序的 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);

很感谢任何形式的帮助..


月关宝盒
浏览 264回答 2
2回答

慕标5832272

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

四季花海

//One or two records from your collectionconst data = [{&nbsp; name: 'abc',&nbsp; place: 'US',&nbsp; zone: 'Pacific'}, {&nbsp; name: 'xyz',&nbsp; place: 'PK',&nbsp; 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给您的查询。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java