MongoDB(一)——增删改查,排序分页,索引,权限机制

简介: 数据库就是用来存放数据的仓库关系型和非关系型数据库软件的项目数据相同点:都是数据库软件,用来存放项目数据

一、数据库简介

数据库就是用来存放数据的仓库

  • 关系型和非关系型数据库软件的项目数据

相同点:都是数据库软件,用来存放项目数据
不同点:

可以按如下步骤进行安装
在这里插入图片描述
wins+R 输入servises.msc查看mongodb是否安装完成

// 查看数据库  show databases
//选择使用哪个数据库  use 数据库的名称   (当该数据库有数据时,系统自动创建)
// 查看集合  show collections
//创建集合  db.collections("集合名")
//删除集合  db.集合名.drop()

如何删除数据库?

  1. 通过use语法选中数据库,
  2. 通过db.dropDatabase()删除数据库

总结:

数据库

查看:show databases
创建:有单独的语法,但是忽略,隐式创建
选择:use 数据库名
删除:

集合

查看:show collections
创建:db.createCollection('集合名') 
//多学一招:后期插入数据,隐式创建集合

删除:db.集合名.drop()

二、增删改查

语法:db.集合名.insert(JSON数据)

说明:集合存在-则直接插入数据,集合不存在-隐式创建

use test2
db.c1.insert({uname:"webopenfather",age:18})

//1.数据库和集合不存在都隐式创建
//2.对象的键统一不加引号方便看,但是查看集合数据时系统会自动加
//mongodb会给每一条数据增加一个全球唯一的_id键

在这里插入图片描述

  • 可以自定义id值,只需要给插入的JSON数据增加_id键即可覆盖
db.c1.insert({_id:1,uname:"webopenfather",age:18})
  • 可以一次性插入多条数据,传递数据,数组中写一个个JSON数据即可
db.c1.insert([
{uname:"z3",age:3},
{uname:"z4",age:3},
{uname:"w5",age:3}
])
//一次性插入三条数据到c1集合
  • 快速插入数据,可以用for循环
for(var i=1;i<10;i++){
print(i)
}
//需求:在test2数据库里c2集合中插入10条数据,分别为a1,a2,...a10
for(var i=1;i<10;i++){
db.c2.insert({uname:"a"+i,age:i})
}

基础语法:db.集合名.find(条件[,查询的列])

条件:
   查询所有条件 {}或者不写
   查询age=6的数据  {age:6}
   既要age=6又要性别=男
   
   查询的列(可选参数
   不写-这查询全部列(字段
   {age:1} 只显示age列(字段
   {age:0} 除了age列(字段都显示
   不管怎么写系统自定义的_id都会在
   
运算符 作用
$gt 大于
$gte 大于等于
$it 小于
$lte 小于等于
$ne 不等于
$in in
$nin not in

如下为查询所有例子:
在这里插入图片描述

  • 查询年龄大于5岁的数据?
//升级语法
db.集合名.find({键:值}) 注:值不直接写

db.集合名.find({
       键:{运算符:值}
})

在这里插入图片描述

  • 查询年龄是5岁,8岁,10岁的数据?

在这里插入图片描述

  • 只看年龄列,或者年龄以外的列(_id

在这里插入图片描述

语法:db.集合名.update(条件,新数据[,是否新增, 是否修改多条])

是否新增:指条件匹配不到数据则插入(true是插入,false否不插入默认)

是否修改多条:指将匹配成功的数据都修改(true是,false否默认)

升级语法: 语法:db.集合名.update(条件,新数据) {修改器:{键:值}}

在这里插入图片描述

语法: db.集合名.remove(条件[,是否删除一条true是false否默认])

在这里插入图片描述

格式化代码

db.集合名.find().pretty()

三、排序&分页

  1. 排序:
语法:db.集合名.find().sort(JSON数据)

说明:键 - 就是要排序的列/字段 、值 :1.升序 -1 降序

在这里插入图片描述

  1. 分页

Limit与 Skip方法

语法:db.集合名.find().sort().skip(数字).limit(数字)

说明:skip 跳过指定数量(可选),limit 限制查询的数量

语法:db.集合名.find().skip().limit(2)

skip计算公式:(当前页-1)* 每页显示条数

四、聚合查询

聚合查询

顾名思义就是把数据聚起来,然后统计

语法:

db.集合名.aggregate([
{管道:{表达式}}
])

常用管道:

$group 将集合中的文档分组,用于统计结果
$match 过滤数据,只要输出符合条件的文档
$sort 聚合数据进一步排序
$skip 跳过指定文档数
$limit 限制集合数据返回文档数

常用表达式

$sum 总和
$sum:1 同count表示统计
$avg 平均
$min 最小值
$max 最大值
  • 例:统计男生,女生总年龄
db.c1.aggregate({
{
$group:{
_id:"$sex",
rs:{$sum:"$age"}
}
}
})

在这里插入图片描述

五、优化索引

数据库中的索引

索引是一种排序好的便于快速查询的数据结构

作用:帮助数据库高效的查询数据

  1. 创建索引语法
语法 :

db.集合名.createIndex(带创建索引的列[,额外选项])

参数:

带创建索引的列:{键:1,....,键:-1}

  1. 删除索引语法
全部删除:db.集合名.dropIndexes()

删除指定:db.集合名.dropIndex(索引名)

  1. 查看索引语法
db.集合名.getIndexes()

六、权限机制

在DOS窗口直接输入命令就可以登录数据库

在实战工作中是不允许的

使用权限机制,开启验证模式

开启验证服务

指用户需要输入密码账号才能登录使用

  1. 添加超级管理员
  2. 退出卸载服务
  3. 重新安装需要输入账号密码的服务(注在原安装命令基础上加上--auth即可)
  1. 添加超级管理员

    先终止数据库

    然后启动

use admin
db.createUser({
    "user":"账号",
    "pwd":"密码",
    "roles":[{
        role:"角色",
        db:"所属数据库",
    }]
})
  1. 脚下留心:DOS窗口必须用管理员身份运行

在这里插入图片描述

  1. 安装需要验证身份的mongodb服务
输入命令: mongod --install --dbpath E:\code\mongodb\data 
--logpath E:\code\mongodb\logs\mongodb2.log --auth

启动服务

用超级管理员身份登录数据库

如果只输入mongodb就不能登入

如下图两种方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

目录
相关文章
|
NoSQL MongoDB 微服务
微服务——MongoDB实战演练——文章评论的基本增删改查
本节介绍了文章评论的基本增删改查功能实现。首先,在`cn.itcast.article.dao`包下创建数据访问接口`CommentRepository`,继承`MongoRepository`以支持MongoDB操作。接着,在`cn.itcast.article.service`包下创建业务逻辑类`CommentService`,通过注入`CommentRepository`实现保存、更新、删除及查询评论的功能。最后,新建Junit测试类`CommentServiceTest`,对保存和查询功能进行测试,并展示测试结果截图,验证功能的正确性。
279 2
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——根据上级ID查询文章评论的分页列表
本节介绍如何根据上级ID查询文章评论的分页列表,主要包括以下内容:(1)在CommentRepository中新增`findByParentid`方法,用于按父ID查询子评论分页列表;(2)在CommentService中新增`findCommentListPageByParentid`方法,封装分页逻辑;(3)提供JUnit测试用例,验证功能正确性;(4)使用Compass插入测试数据并执行测试,展示查询结果。通过这些步骤,实现对评论的高效分页查询。
214 0
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令——MongoDB索引知识概述
本文介绍MongoDB索引相关知识,包括其在查询中的重要作用。索引可避免全集合扫描,显著提升查询效率,尤其在处理海量数据时。通过B树数据结构存储字段值并排序,支持相等匹配、范围查询及排序操作。文中还提供了官方文档链接以供深入学习。
209 0
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令——MongoDB索引的类型
本节介绍了MongoDB中索引的几种类型及其特点。包括单字段索引,支持升序/降序排序,索引顺序对操作无影响;复合索引,字段顺序重要,可实现多级排序;地理空间索引,支持平面与球面几何查询;文本索引,用于字符串搜索并存储词根;哈希索引,基于字段值散列,适合等值匹配但不支持范围查询。
291 1
微服务——MongoDB常用命令——MongoDB索引的类型
|
存储 NoSQL 定位技术
MongoDB索引知识
MongoDB索引是提升查询性能的关键工具,通过构建特殊的数据结构(如B树)优化数据访问路径。无索引时,查询需全集合扫描,时间复杂度为O(n);使用索引后可降至O(log n),实现毫秒级响应。MongoDB支持多种索引类型:单字段索引适用于高频单字段查询;复合索引基于最左前缀原则优化多条件过滤和排序;专业索引包括地理空间索引(支持LBS服务)、文本索引(全文搜索)和哈希索引(分片键优化)。合理选择和优化索引类型,可显著提升数据库性能。建议使用explain()分析查询计划,并定期清理冗余索引。
|
存储 NoSQL 关系型数据库
MongoDB索引知识
MongoDB索引知识
149 1
MongoDB索引知识
|
存储 NoSQL MongoDB
MongoDB 索引限制
10月更文挑战第22天
276 2
|
9月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
9月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
886 79
|
9月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
366 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉

推荐镜像

更多