MongoDB学习(四)-- 查询


查的形式有很多,如比较运算、逻辑运算、成员运算、取指定字段、对数组的查询、使用正则、获取数量,还有排序、分页等等。

1、 查询一个集合中所有数据

db.Students.find()

2、 比较运算

具体有=,!= (‘ n e ′ ) , > ( ′ ne') ,> (' ne)>(gt’) ,< (‘ l t ′ ) , > = ( ′ lt') ,>= (' lt)>=(gte’) ,<= (’$lte’)

2.1 等于 =

//【1】 select *  from Students where name = '李麻子'
db.Students.find({"name":"李麻子"})

2.2 不等于 !=

//【2】select * from Students where name != '李麻子'
db.Students.find({"name":{"$ne":"李麻子"}})

2.3 大于 >

//【3】select * from Students where age > 15
db.Students.find({"age":{"$gt":15}})

2.4 小于 <

//【4】select * from Students where age < 15
db.Students.find({"age":{"$lt":15}})

2.5 大于等于 >=

//【5】select * from Students where age >= 15
db.Students.find({"age":{"$gte":15}})

2.6 小于等于 <=

//【6】select * from Students where age <= 15
db.Students.find({"age":{"$lte":15}})

3、 逻辑运算

MongoDB中字典内用逗号分隔多个条件是and关系,或者直接用 a n d , and, andor,$not(与或非)。

3.1 and

//【1】select * from Students where age >15 and age <25
db.Students.find({"age":{"$gt":15,"$lt":25}})

3.2 多and

//【2】select * from Students where age >15 and age <25 and name != '张三'
db.Students.find({"age":{"$gt":15,"$lt":25},"name":{"$ne":"张三"}})

db.Students.find({"$and":[
    {"age":{"$gt":15,"$lt":25}},
    {"name":{"$ne":"张三"}}
    ]})

在这里插入图片描述

3.3 and、or 联合使用

$or:注意:MongoDB 1.5.3后版本可用

//【3】select * from Students where age > 15 and age <25 or name = '张三'
db.Students.find({"$or":[
    {"age":{"$gt":15,"$lt":25}},
    {"name":"张三"}
    ]})

在这里插入图片描述

//select * from Students where age > 15 and (name like'%唐三%' or address = '山东' )
db.Students.find({"age":{"$gt":15},"$or":[{"name":/唐三/},{"address":"山东"}]})

在这里插入图片描述

3.4 取余%

//【4】select * from Students where age % 2 = 1;
db.Students.find(
{"age":{"$mod":[2,1]}})

//【5】select * from Students where age % 2 != 1;
db.Students.find(
{"age":{"$not":{"$mod":[2,1]}}}) 

在这里插入图片描述

4、 成员算法

成员运算无非in和not in,MongoDB中形式为$in , $nin。

4.1 in

//【1】select * from Students where age in (18,22);
db.Students .find({"age":{"$in":[18,22]}})

在这里插入图片描述

4.2 not in

//【2】select * from Students where age not in (18,22);
db.Students .find({"age":{"$nin":[18,22]}})

在这里插入图片描述

5、 查看指定字段

//查看age=18的数据,并且只显示name和age数据,_id不显示。
db.Students.find({'age':18},{'_id':0,'name':1,'age':1})

在这里插入图片描述

6、 对数组的查询

6.1 查hobbies中有"读书"的人

//查hobbies中有"读书"的人
db.Students.find({"hobbies":"读书"})

在这里插入图片描述

6.2 查看既有"写诗"爱好又有"跳舞"爱好的人-$all

//查看既有"写诗"爱好又有"跳舞"爱好的人
db.Students.find({
    "hobbies":{"$all":["写诗","跳舞"]}
})

在这里插入图片描述

6.3 查看第2个爱好为"旅游"的人

db.Students.find({
    "hobbies.2":"旅游"
})

在这里插入图片描述

6.4 查看所有人的第2个到第3个爱好

在这里插入图片描述

7、字段是否存在-$exists

$exists 字段存在,true返回存在字段key的数据,false返回不存在字度key的数据。
查询出含有hobbies字段的文档

//true返回存在字段hobbies的数据,false返回不存在字度hobbies的数据
db.Students.find({"hobbies":{"$exists":true}})

8、排序

sort() 1代表升序、-1代表降序

8.1 升序

//select * from Students ORDER BY age
db.Students.find().sort({"age":1})

在这里插入图片描述

8.2 降序

//select * from StudentsORDER BY age DESC
db.Students.find().sort({"age":-1})

在这里插入图片描述

9、 分页

limit()方法接受一个数字参数表示取多少个document,skip()代表跳过几个document。

//前两个
db.Students.find().limit(2).skip(0)

//第三个和第四个
db.Students.find().limit(2).skip(2)

10、获取数量

//查询年龄大于15的人数
//方式一:
db.Students.count({'age':{"$gt":15}}) 

//方式二:
db.Students.find({'age':{"$gt":15}}).count()

在这里插入图片描述

11、 去重

在这里插入图片描述

db.Students.distinct()
 
//指定条件
db.Students.distinct("name",{"age":9})

12、 模糊查询

类似like,具体可参考:官方文档-$regex

12.1 某文档包含某字段的模糊查询

查出名字中所有包含有"三"字符串的数据

//【1】select * from Students where name like "%三%"
//方式一:
db.Students.find({"name"://})

//方式二:
//MongoDB的模糊查询可以使用 $regex 运算符通过正则表达式来进行匹配查询.
db.Students.find({"name":{"$regex"://}})

在这里插入图片描述

12.2 查询以某字段为开头的文档

查询学生名字中以"唐"开头的学生

//【1】select * from Students where name like "唐%"
//方式一
db.Students.find({"name":/^/})

//方式二:
db.Students.find({"name":{"$regex":/^/}})

在这里插入图片描述

12.3 查询忽略大小写

//“i”忽略大小写,“m”支持多行。
//查找address字段中有Xi字符串且不区分大小写的文档。
db.Students.find({"address":{"$regex":/Xi/i}})

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值