最近在需要从mongodb中查找出数据,但是连接mongodb也是刚刚接触到,所有如何连接mongdb然后从中查找出数据
之前从https://www.cnblogs.com/minsons/articles/7026600.html博客上面学习到了一些mongodb入门的一些知识,
ServerAddress serverAddress = new ServerAddress(dsc.getServerName(),27017);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential(dsc.getUsername(), dsc.getDbName(), dsc.getPassword().toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
//通过连接认证获取MongoDB连接
mongoClient = new MongoClient(addrs,credentials);
这个是有密码的mongodb连接的方式,也就是我们可以通过这种方式成功的链接到mongodb数据库,链接之后我们可以进行一一些简单的查询,上面的那个博客中的内容介绍的也很详细,现在我们做的是简单的,也就是做一些简单的分组查询的操作,如何进行分组
我们先从简单的查找开始,我们根据上面对数据库的链接从数据库中获取到一个集合这个集合
MongoDatabase db = mongoClient.getDatabase(dsc.getDbName());
MongoCollection<Document> hobby = db.getCollection("rialI");
获取到这个集合之后,我们需要做的事情是对这个集合进行操作,比如我们首先来做一个查找:
Document filter = new Document().append("$regex","411456");
Document query1=new Document("idcard",filter);
query1.append("is_right", 0);
long num=hobby.count(query1);
其实上面的查询语句相当于:
db.getCollection("wdgconllection").find({"idcard":{$regex:411456},"is_right":0}).count()
上面的代码中的查找语句相当于我们在数据库中执行上面的查找语句
那么一个简单的查找我们可以做到了,现在我们需要做的事情是在进行分组查找:
Document query0 = new Document().append("$regex","320700");
Document query1=new Document("certawarddeptcode",query0);
query1.append("is_history", 0);
Document filter=new Document();
filter.append("$match", query1);
MongoDatabase db = mongoClient.getDatabase(dsc.getDbName());
MongoCollection<Document> hobby = db.getCollection("AuditRsShareMaterialI");
AggregateIterable<Document> aggregate = hobby.aggregate(Arrays.asList(
filter,
new Document("$group", new Document("_id", "$certawarddeptcode").append("value", new Document("$sum", 1))),
new Document("$sort", new Document("value", -1)))
);
int i=0;
JSONArray json_arr=new JSONArray();
for (Document document : aggregate) {
JSONObject obj= new JSONObject().parseObject(document.toJson().toString());
obj.put("name", findNameByCode(obj.get("_id").toString()));
json_arr.add(obj);
i++;
if(i>=10){
break;
}
}
return json_arr;
上面便是我们从mongodb中进行分组查找出来结果并且返存储到一个json中,然后返回这个json也就是我们最后想要的结果了
希望对你有所帮助