问题描述
我正在尝试查询按数组值排序的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);
很感谢任何形式的帮助..
1楼
//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
传递给您的查询。
2楼
它成功使用此表达式sortBy =“ programInstance.title.descriptions.0.value”;