MongoDB操作
Posted 临风而眠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB操作相关的知识,希望对你有一定的参考价值。
MongoDB操作(2)
文章目录
MongoDB的高级查询
1.数据查询
-
方法
find():
查询
db.集合名称.find({条件文档})
-
方法
findOne():
查询,只返回第一个
db.集合名称.findOne({条件文档})
-
方法
pretty():
将结果格式化
db.集合名称.find({条件文档}).pretty()
2.比较运算符
可用于条件查找
- 等于: 默认是等于判断,没有运算符.
- 小于:
$lt (less than)
- 小于等于:
$lte (less than equal)
- 大于:
$gt (greater than)
- 大于等于:
$gte (greater than equal)
- 不等于:
$ne (not equal)
db.stu.find({age:{$gte:18}})
如:查找年龄小于等于19岁的
小于19:
3.范围运算符
使用"$in","$nin”
判断是否在某个范围内
nin:不在某个范围
查询年龄为18、28的学生
db.stu.find({age:{$in:[18,28,38]}})
4.逻辑运算符
-
and:在json中写多个条件即可
如:查询年龄大于或等于18,并且性别为true的学生db.stu.find({age:{$gte:18},gender:true})
-
or:使用
$or
,值为数组,数组中每个元素为json如:查询年龄大于18,或性别为false的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})
两个条件要放到列表里面
如:查询年龄大于18或性别为男生,并且姓名是郭靖
db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})
如:
5.正则表达式
使用//
或$regex
编写正则表达式
db.products.find({sku:/^abc/})
db.products.find({sku:{$regex:'789$'}})
6.limit 、skip
-
方法limit():用于读取指定数量的文档
db.集合名称.find().limit(NUMBER)
查询2条学生信息
db.stu.find().limit(2)
-
方法skip():用于跳过指定数量的文档
db.集合名称.find().skip(NUMBER)
db.stu.find().skip(2)
-
同时使用
db.stu.find().limit(4).skip(5
)或
db.stu.find().skip(5).limit(4)
效果一样,但是先skip效率更高
7.自定义查询
使用$where
后面写一个函数,返回满足条件的数据查询年龄夫于30的学生
db.stu.find({ $where:function() { return this.age>30;} })
this是当前这一条
图中的多行输入是在文本编辑器中输入好了再复制进去的
db.a.find({ $where:function() { return this.age<=19;} })
8.投影
(选择返回结果的字段)
在查询到的返回结果中,只选择必要的字段
db.集合名称.find(,{字段名称:1...})
参数为字段与值,值为1表示显示
特殊: 对于_id
列默认是显示的,如果不显示需要明确设置为0
db.stu.find({},{_id:0,name:1,gender:1})
在有的字段写了1的情况下,除了_id想要不显示需要明确设置为0外,其他不要写
其他的写了还会报错
如果整个文档投影,那么两个字典中,前一个字典为空字典
9.排序
方法sort(),用于对集进行排序
db.集合名称.find().sort({字段:1,...})
参数1为升序排列
参数-1为降序排列
如:根据性别降序,再根据年龄升序
db.stu.find().sort({gender:-1,age:1})
这里的name:1 是按照字符串升序排列
可以和前面的条件查询结合起来:
10.统计个数
方法count()用于统计结果集中文档条数
db.集合名称.find({条件}).count()
db.集合名称.count({条件})
db.stu.find({gender:true}).count()
db.stu.count({age:{$gt:20},gender:true})
11.消除重复
方法distinct()
对数据进行去重
db.集合名称.distinct('去重字段',{条件})
db.stu.distinct('hometown',{age:{$gt:18}})
年龄大于18的学生的家乡
对年龄去重:
以上是关于MongoDB操作的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程
VSCode自定义代码片段15——git命令操作一个完整流程
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项