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() 删除满足条件的多条数据
相关推荐
2603_965148115 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
ltl5 小时前
RocksDB 经典故障排查:L0、compaction 与 write stall
数据库
xfhuangfu6 小时前
Oracle中建立到CDB和PDB的连接
数据库·oracle·rpc
小小龙学IT6 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
NineData7 小时前
DTCC 2026 预告|NineData CEO& 创始人叶正盛:面向 AI Agent 的数据库 DevOps 与数据复制实践
数据库·人工智能·数据库开发·devops·ninedata·数据库技术·dtcc
J_bean7 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
J_bean7 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
浪子明X8 小时前
从 MongoDB 文档到关系模型:构建可重跑、可对账的数据迁移流水线
数据库·mongodb·oracle
杜子不疼.8 小时前
国产数据库撑起固井软件自主化:金仓 × 中海油服「海恒 Cemsol」落地解析
数据库
隔窗听雨眠8 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle