在我的项目中,我使用的是SpringBoot 1.4.0-M2和MongoDb 3.0
我想实现排序。
我收集了文件:
<property>
<name>hive.aux.jars.path</name>
<value>file://localpath/yourjar.jar</value>
</property>
我是从19 - 22的随机数,让我假装我得到的数字是21。 现在我想用“年龄”属性命令,使用我的21值。
我想订购像这样的21,22,19,20所以Will,Ed,Tim,Jim
你知道如何以这种方式排序吗?
祝你好运!
答案 0 :(得分:1)
我不知道在单个查询中实现此“包装排序”概念的方法,但您可以在两个查询中执行此操作。下面的示例将所有内容加载到内存中,因此如果您只想在非常大的集合中进行一次操作,则只需稍微改变一下。
如果您使用的是本机MongoDB Java驱动程序3.x:
int age = 21;
DBObject ageSort = new BasicDBObject("age", 1)
List<Document> results = new ArrayList<>();
mongoCollection.find(new BasicDBObject("age", new BasicDBObject("$gte", age)))
.sort(ageSort)
.forEach((Block<Document>) results::add);
mongoCollection.find(new BasicDBObject("age", new BasicDBObject("$lt", age)))
.sort(ageSort)
.forEach((Block<Document>) results::add);
如果您使用的是Spring Data MongoDB:
int age = 21;
Sort ageSort = new Sort(new Sort.Order(Sort.Direction.ASC, "age"))
List<Map> results = mongoTemplate.findAll(
new Query(Criteria.where("age").gte(age)).with(ageSort),
Map.class
);
results.addAll(mongoTemplate.findAll(
new Query(Criteria.where("age").lt(age)).with(ageSort),
Map.class
));