当前位置:   article > 正文

java操作mongo查询排序及指定返回结果包含的字段_java mongodb自定义排序规则

java mongodb自定义排序规则

1.原生Java操作Mongo对结果进行排序

1、首先连接自己的mongo数据库,拿到client操作对象(此处我是读取的配置文件中的数据库IP,端口默认27017)

  1. Properties properties = new Properties();
  2. InputStream stream =Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
  3. properties.load(stream);
  4. String property = properties.getProperty("mongo.host");
  5. MongoCollection<Document> client = new MongoClient(property, 27017).getDatabase("数据库名").getCollection("集合名");

2、通过bson对象设置过滤条件,可设多个

如果想要让查询出来的结果按照文档中的某个字段进行排序在find方法之后调用sort方法再指定过滤条件,实例中的条件表示按照batch字段进行过滤,1代表升序,-1代表降序

  1. Bson bson = Filters.and(Filters.eq("enterpriseId", cId));
  2. FindIterable<Document> documents = client.find(bson).sort(Filters.eq("batch",1));

2.使用MongoTemplate对结果进行排序

1.构建查询条件

  1. Query query = new Query();
  2. Criteria criteria = Criteria.where("key").is("value");
  3. query.addCriteria(criteria);

2.如果要对结果进行排序,在上面的基础上继续添加排序条件

【注】Sort.Order.asc是升序  .desc降序

  1. //先注入MongoTemplate
  2. query.with(Sort.by(Sort.Order.asc("batch"))); //查询结果按照batch字段升序
  3. List<Client> clients = mongoTemplate.find(query, Client.class, "client_info");

3.指定返回结果要包含的字段

  1. public List<Document> queryByCondition(String cId,String... condition) throws IOException {
  2. Properties properties = new Properties();
  3. InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
  4. properties.load(stream);
  5. MongoCollection<Document> client = new MongoClient(properties.getProperty("mongo.host"), 27017).getDatabase("services").getCollection("client_info");
  6. Bson bson1 = Filters.and(Filters.eq("enterpriseId", cId));
  7. List<Bson> bsons = new ArrayList<>();
  8. for (String value : condition) {
  9. bsons.add(
  10. Filters.eq(value, 1)
  11. );
  12. }
  13. Bson bson2 = Filters.and(bsons);
  14. List<Document> list = new ArrayList<>();
  15. FindIterable<Document> documents = client.find(bson1).projection(bson2);
  16. for (Document document : documents) {
  17. list.add(document);
  18. }
  19. return list;
  20. }

示例中我通过可变长参数传递来的字段数组作为结果要返回的字段,先遍历数组取出每一个值放进list<Bson>集合中,value就是要指定返回的字段,第二个参数1表示要返回该字段,0表示不返回该字段【_id字段默认返回】,然后调用projection方法进行过滤

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/287021
推荐阅读
相关标签
  

闽ICP备14008679号