查询 mongoDB 按数组值排序并在 Springdata MongoDB 中使用分页
Query mongoDB sorting by array value and using pagination in Springdata 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);
非常感谢任何帮助..
//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);
排序参数是一个value
(字符串类型),在其上执行排序,您不能传递需要进一步评估(在您的情况下)以获取值的字符串。而是直接将您的值保存到 sortBy
变量中,然后将 sortBy
传递给您的查询。
使用这个表达式成功
排序方式 = "programInstance.title.descriptions.0.value";
我正在尝试查询按数组值排序的 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);
非常感谢任何帮助..
//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);
排序参数是一个value
(字符串类型),在其上执行排序,您不能传递需要进一步评估(在您的情况下)以获取值的字符串。而是直接将您的值保存到 sortBy
变量中,然后将 sortBy
传递给您的查询。
使用这个表达式成功 排序方式 = "programInstance.title.descriptions.0.value";