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() 删除满足条件的多条数据
相关推荐
KIDULT°8 小时前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
我不是程序员三三9 小时前
透明加密软件偶发解密异常排错实录:文件时能打开时乱码
数据库·域智盾
snhna9 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
天行健,君子而铎9 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
网络·数据库·安全
牛战士coding10 小时前
MySQL 读写分离完整链路:主从复制、多数据源与 @DS 路由
数据库·mysql
goehou11 小时前
MCP 查数实战:让 LLM 安全地查数据库(只读账号、SQL 校验、参数漂移)
数据库·ai·llm·教程·mcp·function calling
我不会插花弄玉11 小时前
7.函数【由浅入深-MySQL】
android·数据库·mysql
周小董11 小时前
[1369]Windows上安装PostgreSQL
数据库·windows·postgresql
一只积极向上的小咸鱼13 小时前
第一性原理思考:从拆解问题到用实验检验答案
数据库
这个DBA有点耶14 小时前
时序数据库InfluxDB高基数问题深度拆解:内存索引膨胀机制与OOM完整链路
数据库·架构·dba