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操作的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB PHP

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

mongodb关联查询

VSCode 如何操作用户自定义代码片段(快捷键)