2013-08-29 101 views
22

我在mongodb上相当新,而我试图做有序的mongodb查询。但是春天的数据mongodb的排序方法已被弃用。所以我用org.springframework.data.domain.SortSpring MongoDB查询排序

Query query = new Query(); 
query.with(new Sort(Sort.Direction.ASC,"pdate")); 
return mongoTemplate.find(query, Product.class); 

我用这个代码块。但它没有对数据进行排序。那么你是否更喜欢使用任何有用的方法来进行这种练习?

+0

您的代码看起来是正确的,你能否详细说明你是怎么接触到结论“它不是对数据进行排序” – gerrytan

+2

他们不在页面 –

回答

18

您可以用这种方式定义排序忽略大小写:

new Sort(new Order(Direction.ASC, FIELD_NAME).ignoreCase() 
+0

上有序的日期递增的谢谢,这是我的意思是几年前在我的答案,我接受你的答案。 –

+0

实际上,您可以将逗号分隔列表(或预构造列表)传递给排序构造函数并定义多个排序条件! – th3morg

+2

它不工作在我身上,用最新的MongoDb,奇怪的...我有Mongo和代码那样的例外... java.lang.IllegalArgumentException:给定的排序包含用户名的顺序忽略大小写! MongoDB目前不支持排序忽略情况! –

0

我的问题的代码是真实的,现在我看到,在字段'pdate'上有一个camelCase问题。

3

您可以使用聚合来排序数据。您必须使用匹配和分组条件进行聚合查询并展开您的字段。

AggregationOperation match = Aggregation.match(matching criteria); 
AggregationOperation group = Aggregation.group("fieldname"); 
AggregationOperation sort = Aggregation.sort(Sort.Direction.ASC, "fieldname"); 
Aggregation aggregation = Aggregation.newAggregation(Aggregation.unwind("fieldname"),match,group,sort);