`

Mongodb高级查询

阅读更多
public class MongoDbFind {
002     public static final int port = 27017;
003     public static final String host = "127.0.0.1";
004     /**
005      * 获取数据库对象
006      *
007      * @return
008      */
009     private MongoDatabase getDb() {
010         MongoClient mongo = new MongoClient(host, port);
011         MongoDatabase db = mongo.getDatabase("new_db");
012         return db;
013     }
014     /**
015      * 获取表(集合)
016      *
017      * @return
018      */
019     private MongoCollection getCollection() {
020         MongoDatabase db = getDb();
021         MongoCollection<Document> table = db.getCollection("user");
022         return table;
023     }
024     /**
025      * 查询出一条数据
026      */
027     @Test
028     public void findOne() {
029         MongoCollection table = getCollection();
030         BasicDBObject dbObject = new BasicDBObject();
031         //mongodb中按age字段倒序查询(-1是倒序,1是正序)
032         dbObject.put("age",-1);
033         FindIterable iterate = table.find().sort(dbObject).limit(1);
034         System.out.println(iterate.iterator().tryNext());
035     }
036     /**
037      * mongodb分页查询
038      *
039      * @param pageIndex 当前页码
040      */
041     private void findPage(int pageIndex) {
042         int pageSize = 3;
043         MongoCollection table = getCollection();
044         //mongodb分页查询出游标
045         MongoCursor cursor = table.find().limit(pageSize).skip((pageIndex - 1) * pageSize).iterator();
046         System.out.println("当前页:" + pageIndex);
047         while (cursor.hasNext()) {
048             System.out.println(cursor.next());
049         }
050     }
051     @Test
052     public void findPage() {
053         findPage(1);
054         findPage(2);
055     }
056     /**
057      * 等于查询
058      */
059     @Test
060     public void comparison() {
061         MongoCollection table = getCollection();
062         BasicDBObject dbObject = new BasicDBObject();
063         dbObject.put("age"20);
064         //查询出年龄是20的记录
065         MongoCursor cursor = table.find(dbObject).iterator();
066         while (cursor.hasNext()) {
067             System.out.println(cursor.next());
068         }
069     }
070     /**
071      * 使用in包含查询
072      */
073     @Test
074     public void findIn() {
075         //定义一个数组存储in查询的条件值
076         List<Integer> list = new ArrayList<>(4);
077         list.add(20);
078         list.add(28);
079         list.add(15);
080         list.add(13);
081         MongoCollection table = getCollection();
082         BasicDBObject dbObject = new BasicDBObject();
083         //这里使用BasicDBObject嵌套来并使用$in预定义名称来实现mongodb的in查询功能
084         dbObject.put("age"new BasicDBObject("$in", list));
085         MongoCursor cursor = table.find(dbObject).iterator();
086         while (cursor.hasNext()) {
087             System.out.println(cursor.next());
088         }
089     }
090     /**
091      * 大于小于区间查询
092      */
093     @Test
094     public void findGtLt()
095     {
096         MongoCollection table = getCollection();
097         BasicDBObject dbObject = new BasicDBObject();
098         //mongodb实现大于小于区间的查询,注意大于是$gt,小于是$lt
099         dbObject.put("age"new BasicDBObject("$gt"15).append("$lt",25));
100         MongoCursor cursor = table.find(dbObject).iterator();
101         while (cursor.hasNext()) {
102             System.out.println(cursor.next());
103         }
104     }
105     /**
106      * 不等于查询
107      */
108     @Test
109     public void findNe()
110     {
111         MongoCollection table = getCollection();
112         BasicDBObject dbObject = new BasicDBObject();
113         dbObject.put("age"new BasicDBObject("$ne",17));
114         MongoCursor cursor = table.find(dbObject).iterator();
115         while (cursor.hasNext()) {
116             System.out.println(cursor.next());
117         }
118     }
119     /**
120      * 多条件查询
121      */
122     @Test
123     public void findMulti()
124     {
125         MongoCollection table = getCollection();
126         //多条件查询需要先定义一个BasicDBObject数组来存储多个条件
127         List<BasicDBObject> objects = new ArrayList<BasicDBObject>();
128         objects.add(new BasicDBObject("age"new BasicDBObject("$ne"17)));
129         objects.add(new BasicDBObject("name","zicheng-3"));
130         BasicDBObject query=new BasicDBObject();
131         query.put("$and",objects);
132         MongoCursor cursor = table.find(query).iterator();
133         while (cursor.hasNext()) {
134             System.out.println(cursor.next());
135         }
136     }
137     /**
138      * 通过使用正则表达式模糊查询
139      */
140     @Test
141     public void findRegex()
142     {
143         MongoCollection table = getCollection();
144         BasicDBObject regexQuery = new BasicDBObject();
145         regexQuery.put("name"new BasicDBObject("$regex""自成.*-[1-8]"));
146         //打印mongodb的查询条件
147        // System.out.println(regexQuery.toString());
148         MongoCursor cursor = table.find(regexQuery).iterator();
149         while (cursor.hasNext()) {
150             System.out.println(cursor.next());
151         }
152     }
153 }
分享到:
评论

相关推荐

    MongoDB高级查询用法大全

    MongoDB 高级查询用法大全 MongoDB 作为一个 NoSQL 数据库,提供了多种高级查询方式,以下是 MongoDB 高级查询用法大全: 一、比较运算符 在 MongoDB 中,比较运算符用于比较字段的值,常用的比较运算符有: * $...

    MongoDB高级查询

    ### MongoDB高级查询知识点详解 #### 一、基本概念回顾 MongoDB 是一款非常流行的文档型数据库,它使用 JSON 格式的文档存储数据。对于开发者来说,掌握 MongoDB 的查询技巧至关重要,尤其是在处理复杂查询需求时。...

    MongoDB高级查询.doc

    在MongoDB中,查询是获取数据的核心操作,而高级查询则是实现复杂数据筛选的关键。以下将详细介绍文档中提到的一些高级查询方法: 1. **比较操作符**: - `$gt`(大于): 查询`field`值大于`value`的文档。 - `$...

    mongodb高级查询语句

    mongod高级查询语句,Javascript查询和$where查询,正则表达式匹配

    前端 Vue+Node+MongoDB高级全栈开发

    在本篇内容中,我们将深入探讨“前端 Vue+Node+MongoDB 高级全栈开发”的核心知识点。通过本文的学习,您将能够更好地理解如何利用这些技术构建高效、灵活且可扩展的应用程序。 ### 一、Vue.js简介 **Vue.js** 是...

    MongoDB 高级查询 aggregate 聚合管道

    使用聚合管道可以对集合中的文档进行变换和组合,常用于多表关联查询、数据的统计。 db.COLLECTION_NAME.aggregate() 方法用来构建和使用聚合管道,下图是官网给的实例,可以看出来聚合管道的用法还是比较简单的。 ...

    MongoDB查询练习题及答案

    以上仅是 MongoDB 查询的一些基本操作,实际上,MongoDB 提供了更多高级查询功能,如聚合框架、正则表达式匹配、地理空间查询等。学习并熟练掌握这些查询技巧,对于有效管理和分析 MongoDB 数据库中的数据至关重要。

    MongoDB之查询详解

    ### MongoDB查询详解 #### 一、引言 在NoSQL数据库的世界里,MongoDB因其灵活的数据模型、高性能和可扩展性...在未来的学习和实践中,我们还可以进一步探索其他高级查询特性,如聚合框架等,以应对更复杂的业务需求。

    Mongodb视频-燕十八 mongodb视频教程全集21讲+mongodb高级实战开发视频教程

    #### 第二部分:MongoDB高级实战开发 **第8讲:高级查询** - 正则表达式匹配、文本搜索等高级查询技巧。 - `$lookup`操作符实现多集合联合查询的方法。 - 使用聚合框架进行复杂查询示例。 **第9讲:性能调优** - ...

    前端Vue+Node+MongoDB高级全栈开发

    MongoDB高级技术栈全覆盖 前端 Vue+Node+MongoDB高级全栈开发

    使用aggregate在MongoDB中查询重复数据记录的方法

    MongoDB的`aggregate`函数是用于处理数据集合的高级工具,尤其在数据分析、报表生成以及数据清洗方面表现强大。在本场景中,我们将探讨如何利用`aggregate`来查询和处理重复数据记录。 首先,理解`aggregate`的基本...

    MongoDB高级应用场景及技术特点分析.pptx

    MongoDB高级应用场景及技术特点分析 MongoDB作为NoSQL数据库管理系统,具有许多高级应用场景和技术特点。本文将从 MongoDB 技术特点及典型应用场景分析、Document Model 最佳的数据管理方式、Distributed System ...

    MongoDB中文教程

    #### 五、MongoDB高级查询 **5.1 条件操作符** - **$all匹配所有**: ```javascript db.collection.find({ key: { $all: ["value1", "value2"] } }) ``` - **$exists判断字段是否存在**: ```javascript db....

    mongodb 查询语法和实例

    以上是MongoDB查询语法的一些核心点,实际应用中还有更多高级特性和复杂查询技巧。了解并熟练运用这些工具,可以极大地提高MongoDB数据管理的效率和精度。通过实践和阅读`query数据语法.txt`中的实例,可以更深入地...

    头歌6.5MongoDB 文档的高级查询操作

    头歌6.5MongoDB 文档的高级查询操作

    MongoDB高级索引.pdf

    本文将深入探讨如何在 MongoDB 中为数组字段和子文档字段创建高级索引,以优化查询性能。 首先,让我们了解一下在数组字段上创建索引的方法。在上述示例中,`tags` 字段是一个数组,包含字符串如 "music", "cricket...

    MongoDB基础入门到高级进阶

    视频详细讲解,需要的小伙伴自行网盘下载,链接见附件,永久有效。 MongoDB是一个开源、高性能、无模式的文档型...高级进阶部分 章节一:索引 章节二:特殊集合 章节三:副本集 章节四:分片集群 章节五:安全认证

Global site tag (gtag.js) - Google Analytics