MongoDB入门

1.定义

基于分布式文件存储的开源数据库,由C++编写,提供了一个可扩展的高性能数据存储解决方案

文档型数据库,NoSQL数据库的一种,非关系型数据库

数据库由集合组成,对应MySQL中的表;集合中包含多个文档,文档对应MySQL中的一行,即一条记录;文档使用类似于JSON的格式来组织和存储数据(BSON)

对比:

关系型数据库MySQL

非关系型数据库Redis 键值型

特点:更加灵活

MongoDB并不需要事先创建好数据库和集合,然后再插入数据;也不需要预先定义好集合中字段的类型和长度,同一个集合中的数据也不需要有相同的结构等

安装

环境 rocky 9

# 1. 添加 MongoDB 官方源sudo tee /etc/yum.repos.d/mongodb-org-7.0.repo <<EOF[mongodb-org-7.0]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-7.0.ascEOF# 2. 安装sudo dnf install -y mongodb-org# 3. 启动并设置开机自启sudo systemctl start mongodsudo systemctl enable mongod# 4. 验证mongosh --eval "db.version()"AI写代码

命令

1.切换数据库
use + 数据库名称
可用use指定一个不存在的数据库,插入数据才显示
2.插入数据
db.users.insertOne({name:”cara”}) 插入一条数据
db.users.insertMany([ { },{ } ]) 插入多条数据
3.查询数据
db.users.find() 查询users集合中的数据
limit() 限制查询返回结果的数量
sort() 排序查询结果 ( 1升序, -1降序 )

返回等级最高的两个用户

多个字段排序 (等级相同,姓名字母顺序排列)

skip() 跳过一些查询结果

跳过第一条数据,返回前2名

skip和sort一起使用,实现分页

find({field:value}) 条件查询

查询等级为3的用户

注:等级为一个数字,传入字符串无返回

返回级别为3的name字段,1返回,0不返回

排除某个字段,返回其他字段

$regex:/expression/ 正则表达式

查询名字含张的数据

忽略大小写

4.运算符

查询level > 3

gt 大于 lt小于 eq 等于 gte 大于等于 lte小于等于 $in 多个条件中的一个

查询 等级为1或3的用户 是否存在

查询等级大于等于3小于等于5的用户

$and : [{条件1},{条件2}] 逻辑与
$or : [{条件1},{条件2}] 逻辑或
$not : {条件} 逻辑非 反转查询条件

查询等级不等于3的用户

$nin() not in不在数组中的值
$exists() 判断某个字段是否存在

查询存在email字段的数据 1存在 0不存在

注:$exists()只能用来查询某个字段是否存在,不能用来查询某个字段的值是否存在

虽然邮箱值为null,但是邮箱字段存在,所以能查询到

5.聚合

统计数据

countDocuments() 统计文档数量

查询等级大于等于3的用户数量

findOne({filter}) 查询满足条件的一条数据

查询等级大于等于3的第一条数据

6.更新数据
updateOne() 更新满足条件的一条数据

$set 表示后面是要更新的字段,若字段不存在,会自动创建

一般用ID更新,直接从终端复制ID,放到update语句的第一个参数里面就可以了

updateMany() 更新满足条件的多条数据
7.删除数据
deleteOne() 删除满足条件的一条数据
deleteMany() 删除满足条件的多条数据

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注