java操作mongo查询排序及指定返回结果包含的字段
1.原生Java操作Mongo对结果进行排序1、首先连接自己的mongo数据库,拿到client操作对象(此处我是读取的配置文件中的数据库IP,端口默认27017)Properties properties = new Properties();InputStream stream =Thread.currentThread().getContextClassLoader().getResourc
·
1.原生Java操作Mongo对结果进行排序
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));
2.使用MongoTemplate对结果进行排序
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");
3.指定返回结果要包含的字段
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方法进行过滤
更多推荐
已为社区贡献1条内容
所有评论(0)