赞
踩
上一篇文章我们学习了使用Java对MongoDB进行基本的增删改查操作。这次我们进一步来学习如何使用Java对MongoDB进行复杂查询。其中包含对查询出的文档按照某个字段进行排序。对查询出的文档进行条数的限制(适用于分页)以及比较运算符(>,>=,<,<,<=,!=)的使用。下面我将实例代码贴出来,我已经将注释在代码中标注。同学们可以按照这个进行揣摩和理解。
注:
1.为什么在条件排序后需要加上limit限制条数:因为排序后的文档数量可能过大,超过最大缓存32M,大家可以百度来增大缓存,或者像我一样加个limit限制,在不影响业务的前提下。
- public class QueryMain {
-
- public static void main(String[] args) {
- // 查询限制条数,limit的使用
- findDocumentByLimit();
- // 查询按照某个条件倒序排列,sort的使用
- findDocumentBySort();
- // 查询带有比较运算条件>,>=,<,<=,!=的使用
- findDocumentByRelation();
- }
-
- // 进行分页查询,限制查询出的数据条数
- public static void findDocumentByLimit() {
- try {
- MongoClient mongoClient = MongoUtils.mongoClient;
- MongoDatabase database = mongoClient.getDatabase("testDB");
- MongoCollection<Document> collection = database.getCollection("testCollection");
- // 组装文档
- BasicDBObject searchDoc = new BasicDBObject().append("id", 1);
- // 进行查询
- FindIterable<Document> find = collection.find(searchDoc).limit(10);
- for (Document document : find) {
- System.out.println(document.getInteger("id") + "\t" + document.getString("name") + "\t"
- + document.getString("sex") + "\t" + document.getDate("date"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * 按照某个条件排序查询,并限制查询的条数。 sort('字段名',num)方法的参数num为排序的方式,1为升序,-1为降序
- */
- public static void findDocumentBySort() {
- try {
- MongoClient mongoClient = MongoUtils.mongoClient;
- MongoDatabase database = mongoClient.getDatabase("testDB");
- MongoCollection<Document> collection = database.getCollection("testCollection");
- // 组装文档
- BasicDBObject searchDoc = new BasicDBObject().append("id", 1);
- // 查询,排序并限制条数(查询的数量太大进行排序会导致内存溢出而报错)
-
- FindIterable<Document> find = collection.find(searchDoc).sort(new Document().append("id", -1)).limit(10);
- for (Document document : find) {
- System.out.println(document.getInteger("id") + "\t" + document.getString("name") + "\t"
- + document.getString("sex") + "\t" + document.getDate("date"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // 带有比较运算符的条件查询,并限制查询的条数
- public static void findDocumentByRelation() {
- try {
- MongoClient mongoClient = MongoUtils.mongoClient;
- MongoDatabase database = mongoClient.getDatabase("testDB");
- MongoCollection<Document> collection = database.getCollection("testCollection");
- // 组装文档,将关系运算符嵌套在条件中。
- // 大于:$gt,大于等于:$gte,小于:$lt,小于等于:$lte,不等于:$ne
- BasicDBObject searchDoc = new BasicDBObject().append("id", new Document().append("$lt", 10));
- // 查询限制条数(查询的数量太大进行排序会导致内存溢出而报错)
-
- FindIterable<Document> find = collection.find(searchDoc).limit(10);
- for (Document document : find) {
- System.out.println(document.getInteger("id") + "\t" + document.getString("name") + "\t"
- + document.getString("sex") + "\t" + document.getDate("date"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- }
喜欢的朋友点个赞哦~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。