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 Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
EOF

# 2. 安装
sudo dnf install -y mongodb-org

# 3. 启动并设置开机自启
sudo systemctl start mongod
sudo systemctl enable mongod

# 4. 验证
mongosh --eval "db.version()"

命令

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() 删除满足条件的多条数据
相关推荐
l1t12 分钟前
DeepSeek总结的parquet Variant “碎形化“技术
数据库·parquet
云计算磊哥@23 分钟前
运维开发宝典030-MySQL06数据库运维阶段总结
运维·数据库·运维开发
这个DBA有点耶23 分钟前
国产数据库有哪些?2026年主流产品选型对比
数据库·程序人生·职场和发展·架构·程序员创富·改行学it
pFg0v4O7P29 分钟前
从Cursor迁移到Claude Code:完整过渡指南
数据库
W001hhh35 分钟前
260615PM
数据库
吴声子夜歌1 小时前
SQL经典实例——元数据查询
数据库·sql
睡不醒男孩0308231 小时前
生产环境故障销账:PostgreSQL 突发连接数暴涨与死锁,如何利用 CLup 秒级定位与解锁?
运维·数据库
2601_962054951 小时前
终端与IDE形态的vibe coding实测:两款AI编程工具迭代能力对比
数据库·ide·ai编程
万岳科技1 小时前
教育培训系统开发流程详解:平台建设关键环节解析
数据库·后端·学习
Nturmoils2 小时前
线上修一批脏数据,先别急着全量重来
数据库·后端