查询 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";