`
阅读更多

     此篇文章简单的记录一下mongodb 的简单查询操作。

 

一、数据准备:

db.persons.insertMany([
    {'userId':1,name:'张三','age':20,'scores':[80,90,100],father : {name:'张三三','age':46}},
    {'userId':2,name:'李四','age':21,'scores':[80,95,98],father : {name:'李四四','age':50}},
    {'userId':3,name:null,'age':22,'scores':[20,40,90]},
    {'userId':4,'age':23,'scores':[60,80,100]},
    {'userId':5,name:'钱七','age':25,'scores':[90,95,100]}
]);

 

二、单个文档,简单文档的查询:

1、返回指定的字段 (返回name和age字段)

db.persons.find({},{name:1,age:1,_id : 0})

   注意:1、默认会返回 _id 字段,如果想不要返回,给 _id : 0 即可。

              2、find() 方法的第二个参数指定需要返回的字段,字段:1 表示返回 字段:-1 表示不返回

              3、第二个方法中不可同时出现  字段 :1 和 字段 : -1这种格式,但是  _id 可以是 -1

 

2、查询 name=22 的人员,直接使用 $eq 操作符

db.persons.find({age : 22});
db.persons.find({age:{$eq: 22}});

 

3、查找 name>22 的人员,使用 $gt 操作符

db.persons.find({age:{$gt: 22}});

 

4、查找 name>=22 的人员,使用 $gte 操作符

db.persons.find({age:{$gte: 22}});

 

5、查找 name<22 的人员,使用 $lt 操作符

db.persons.find({age:{$lt: 22}});

 

6、查找 name<=22 的人员,使用 $lte 操作符

db.persons.find({age:{$lte: 22}});

 

7、查找 name>20 && name<=22 的人员

db.persons.find({age:{$gt:20,$lte: 22}});

 

8、查找 name 不是 李四 的人员,使用 $ne 操作符

db.persons.find({name:{$ne: "李四"}})


9、查询 name=张三 && age>20 的人 ,使用 $and 操作符

db.persons.find({name:"张三",age:{$gt: 20}});
db.persons.find({$and: [{name:"张三"},{age:{$gt: 20}}]})

 

10、查询 name=张三 || age>20 的人 ,使用 $or 操作符

db.persons.find({$or: [{name:"张三"},{age:{$gt: 20}}]})

 

11、查询 name不是张三&&age不是>20的人,使用 $nor 操作符,即$or的取反

db.persons.find({$nor: [{name:"张三"},{age:{$gt: 20}}]})

 

12、查找 userId > 1 and ( name='李四' or age = 23 ) 的用户,即 $and $or 操作符的混合使用

 

db.persons.find({
    userId : {$gt : 1},
    $or : [{name : '李四'},{age : 23}]
});

db.persons.find({
    $and : [{
        userId : {$gt : 1},
        $or : [{name : '李四'},{age : 23}]
    }]
});
 

13、查找 name 不是李四 的人,使用 $not 操作符

db.persons.find({name:{$not: {$eq: "李四"}}});
db.persons.find({name:{$not: /^李四$/}})

   注意:1、$not 作用在其它条件之上,用于取反操作

              2、$not 用于查找不是这个值的数据,如果某个记录中没有$not查找的字段,该记录也会出来。

              3、$not 不可作为顶级操作符,即find($not:{})这种形式

 

14、查找 age%5=0 的人,使用 $mod 操作符

db.persons.find({age:{$mod: [5, 0]}})

   解释:表示查询出 age 和 5进行求模,余数为0 的记录。

 

15、查询 age in (20,30,25) 的人,使用 $in 操作符

db.persons.find({age:{$in: [20,30,25]}})


    注意: 官网建议,当在同一个字段上进行查询时,应该使用$in操作符,而不是 $or 操作符,即能用 $in完成就不要使用$or完成。

 

16、查询 age not in (20,30,25) 的人,使用 $nin 操作符

db.persons.find({age:{$nin: [20,30,25]}})

 

17、$all 表示键需要匹配所有的值

    * 查找 age = 20 && age = 25 的人,使用 $all 操作符

db.persons.find({age:{$all: [20,25]}})

    * 查找 scores 同时存在 80 和 90 的人,使用 $all 操作符

db.persons.find({scores:{$all: [80,90]}})

   注意:1、$all 一般用来匹配数组中的元素。

              2、$all 匹配元素必须都要存在,和数组中的元素的顺序无关。

 

18、只查询 name 字段存在 && 值不为李四的记录,使用 $exists 操作符

db.persons.find({name:{$exists: true,$nin: ["李四"]}})

 

19、匹配 name=null 的情况,默认情况下会匹配出 name 不存在的记录

   * 匹配 name=nullname不存在的情况

db.persons.find({name:null})

   * 只匹配 name=null 的记录

db.persons.find({name:{$eq: null,$exists: true}})

 

20、正则表达式的使用,查找 name like '张%' 的记录,使用正则表达式

db.persons.find({name:/^张/})

 

21、查询总共有多少人。

db.persons.find({}).count()

 

三、数组的匹配

1、单个元素的匹配,格式 {key:valie} , 比如查询 scores 中存在 80 的元素

db.persons.find({scores:80})

 

2、多个元素的匹配,格式{key:{$all:[xxx,yyy]}},比如:查询 scores 中同时存在 80和90的元素,80和90在scores中的顺序无所谓,没有影响。

db.persons.find({scores:{$all: [80,90]}})

 

3、匹配数组中第几个角标对应的值是多少,比如:查询 scores中的第二个元素 90

db.persons.find({"scores.1":90})

   注意:数组角标是从 0 开始。

 

4、查询指定长度的数组,比如:查询 scores 数组的长度 =3 的数组

db.persons.find({"scores":{$size:3}})

 

5、返回数组中的子集,使用 $slice 操作符,正数表示返回前面多少条,负数表示返回后面多少条,区间表示跳过多少条和返回多少条,如下图所示:

 

6、查询数组中的某一个元素,要符合给定查询条件,使用$elemMatch。比如:查询 name=张三 scores > 90 && scores < 90,结果如下图所示:

 

 四、内嵌文档的查询:

1、查询 father.name=张三三 的文档

db.persons.find({"father.name":"张三三"})

2、内嵌文档的查询,和普通的文档查询是一样的。只是内嵌文档需要 写 "xxx.yyy" 需要加上双引号。

 

五、分页查询:

db.persons.find().skip(2).limit(2)

    skip:  表示跳过多少条记录

    limit:  表示需要返回多少条记录

 

六、排序操作

db.persons.find({}).sort({age:1})

    注意:1、age : 1 表示根据 age 正序排序

               2、age : -1 表示根据 age 倒序排序

               3、如果需要多个字段排序,中间以逗号分隔即可。

 

 

  • 大小: 52.2 KB
  • 大小: 684.3 KB
  • 大小: 527.6 KB
  • 大小: 19.5 KB
分享到:
评论

相关推荐

    mongo2SQL:Mongodb 查询到 sql 查询转换器

    Mongodb 查询到 sql 查询转换器。 示例:在:db.user.find({name: 'julio'}); out: SELECT * FROM user WHERE name = 'julio'; 在:db.user.find({_id: 23113},{name: 1, age: 1}); out: SELECT name, age FROM ...

    MongoDB企业级分片集群搭建视频.zip

    12 Python简单操作MongoDB.mp4 13 Python获取MongoDB的状态信息.mp4 14 MongoDB分片集群之configsvr实战.mp4 15 MongoDB分片集群之router实战.mp4 16 MongoDB分片集群之sharedsvr实战.mp4 17 MongoDB分片集群的使用...

    greenleaf:MongoDB的简单查询生成器

    :seedling: greenleaf-用于MongoDB的简单,类型安全且易于使用的查询生成器 安装 要安装使用: go get github.com/slavabobik/greenleaf 快速范例 package main import ( "context" "github....

    mongodb java简单demo

    java连接mongodb ,创建集合,添加、修改、查询、删除文档

    MongoDB基本操作指南

    图2 MongoDB支持嵌入子文档简单易用的查询方式:MongoDB中的查询让人很舒适,没有SQL难记的语法,直接使用JSON,相当的直观。对不同的开发语言,你可以使用它最基本的数组或散列格式进行查询。配合附加的operator,...

    使用C#访问MongoDB实现简单增删改查

    MongoDB是我们目前比较主流的一种缓存数据库,一些比较大的网站都在使用这个缓存数据库,以解决高并发,大数据的问题。前几天学习了一下这个,希望可以帮到大家。

    mongodb数据库的一些简单实用

    对于mongodb的初学者有一定的帮助,是自己亲手做的一些笔记,希望可以帮助到想要学习的朋友。一些mongodb的创建数据库,添加数据。删除数据,更新数据,以及查询时的各种选择器。

    C# Asp.net中简单操作MongoDB数据库

    C# Asp.net中简单操作MongoDB数据库。 包括数据库连接、基本的增加、删除、修改、查询操作,适合初入MongoDB的C#程序员。

    Redis/MongoDB 接口封装(C++)

    3. 利用组合模式和装饰模式的思想开发 MongoDB 数据库查询条件装饰器 将查询条件和数据库 MongodbModule 数据模型进行解耦合 4. 抽象出一套 MongoDB Module 结果集接口 通过模板和特化技术实现 string/int 等不同...

    基于nodejs+mongodb的简单报名登记+查询系统源码(课程设计).zip

    基于nodejs+mongodb的简单报名登记+查询系统源码(课程设计).zip 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或...

    MongoDB简单聚合函数.pdf

    MongoDB简单聚合函数.pdf 学习资料 复习资料 教学资源

    MongoDB For Windows v4.0.zip

    之所以喜欢MongoDB,主要是因为在动态语言中使用它是如此的简单,自然。到目前为止,我已经在两个项目(Encode 和 Sparrw)中使用过它了,虽然对这个选择我非常满意,但是有些问题我还是没有注意到,这些问题让我抓...

    MongoDB 高级查询 aggregate 聚合管道

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

    在php7中MongoDB实现模糊查询的方法详解

    在实际开发中, 有不少的场景需要使用到模糊查询, MongoDB shell 模糊查询很简单: db.collection.find({'_id': /^5101/}) 上面这句就是查询_id以’5101’开始的内容。 在老的MogoDB中模糊查询挺简单的,这里简单...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    6.4 简单介绍 6.5 命令行工具 6.6 内部原理 6.7 本章小结 第7章 MapReduce统计 7.1 Map函数 7.2 Reduce函数 7.3 结果存储 7.4 对Reduce函数结果进一步处理 7.5 其他控制细节 7.6 本章小结 第3...

    mongodb-win32-x86_64-2008plus-ssl-v3.4-latest-signed.msi

    MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。 你可以通过本地或者网络创建数据...

    mongodb入门教程笔记

    MongoDB 基础,涉及到CRUD,简单查询,文档中对每个MongoDB 属性提供一个简单的demo,另有管道查询操作,java代码实现操作MongoDB的简单例子。

    SpringBoot整合MongoDB.docx

    SpringBoot可以非常方便地引入和操作MongoDB。本节分两部分,记录个人学习SpringBoot使用MongoDB...第一部分是一个简单的springboot连接mongo的demo,测试查询功能。 第二部分是基于mongo实现的增删改查数据示例。

    Studio_3T_for_MongoDB_v2019.3.0x64.rar

    它是一个简单、强大和直接的应用程序,具有现代直观的用户界面,使用户更方便地开发他们的数据库和应用程序。 你也可以下载世界创造者标准。 用于MongoDB 2019的Studio 3T能够生成5种不同语言的驱动代码。 它...

    mongodb 数据库基本操作.doc

    创建数据库:在 MongoDB 中,创建数据库非常简单。当向一个不存在的数据库写入数据时,MongoDB 就会自动创建该数据库。例如,使用 use mydatabase 命令,如果 mydatabase 不存在,MongoDB 就会创建它。 创建集合:...

Global site tag (gtag.js) - Google Analytics