赞
踩
1、首先连接自己的mongo数据库,拿到client操作对象(此处我是读取的配置文件中的数据库IP,端口默认27017)
- Properties properties = new Properties();
- InputStream stream =Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
- properties.load(stream);
- String property = properties.getProperty("mongo.host");
- MongoCollection<Document> client = new MongoClient(property, 27017).getDatabase("数据库名").getCollection("集合名");
2、通过bson对象设置过滤条件,可设多个
如果想要让查询出来的结果按照文档中的某个字段进行排序在find方法之后调用sort方法再指定过滤条件,实例中的条件表示按照batch字段进行过滤,1代表升序,-1代表降序
- Bson bson = Filters.and(Filters.eq("enterpriseId", cId));
-
- FindIterable<Document> documents = client.find(bson).sort(Filters.eq("batch",1));
1.构建查询条件
- Query query = new Query();
- Criteria criteria = Criteria.where("key").is("value");
- query.addCriteria(criteria);
2.如果要对结果进行排序,在上面的基础上继续添加排序条件
【注】Sort.Order.asc是升序 .desc降序
- //先注入MongoTemplate
- query.with(Sort.by(Sort.Order.asc("batch"))); //查询结果按照batch字段升序
- List<Client> clients = mongoTemplate.find(query, Client.class, "client_info");
- public List<Document> queryByCondition(String cId,String... condition) throws IOException {
- Properties properties = new Properties();
- InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
- properties.load(stream);
-
- MongoCollection<Document> client = new MongoClient(properties.getProperty("mongo.host"), 27017).getDatabase("services").getCollection("client_info");
-
- Bson bson1 = Filters.and(Filters.eq("enterpriseId", cId));
-
- List<Bson> bsons = new ArrayList<>();
- for (String value : condition) {
- bsons.add(
- Filters.eq(value, 1)
- );
- }
- Bson bson2 = Filters.and(bsons);
-
- List<Document> list = new ArrayList<>();
- FindIterable<Document> documents = client.find(bson1).projection(bson2);
- for (Document document : documents) {
- list.add(document);
- }
- return list;
- }

示例中我通过可变长参数传递来的字段数组作为结果要返回的字段,先遍历数组取出每一个值放进list<Bson>集合中,value就是要指定返回的字段,第二个参数1表示要返回该字段,0表示不返回该字段【_id字段默认返回】,然后调用projection方法进行过滤
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。