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() 删除满足条件的多条数据
相关推荐
Shely201721 分钟前
MySQL数据表管理
数据库·mysql
爬山算法28 分钟前
MongoDB(80)如何在MongoDB中使用多文档事务?
数据库·python·mongodb
APguantou35 分钟前
NCRE-三级数据库技术-第2章-需求分析
数据库·需求分析
寂夜了无痕1 小时前
MySQL 主从延迟全链路根因诊断与破局法则
数据库·mysql·mysql主从延迟
爱丽_1 小时前
分页为什么越翻越慢:offset 陷阱、seek 分页与索引排序优化
数据库·mysql
APguantou1 小时前
NCRE-三级数据库技术-第12章-备份与数据库恢复
数据库·sqlserver
Bat U1 小时前
MySQL数据库|表设计+新增+分组查询
数据库·mysql
麦聪聊数据2 小时前
企业数据流通与敏捷API交付实战(五):异构数据跨库联邦与零代码发布
数据库·sql·低代码·restful
Elastic 中国社区官方博客2 小时前
当 TSDS 遇到 ILM:设计不会拒绝延迟数据的时间序列数据流
大数据·运维·数据库·elasticsearch·搜索引擎·logstash
Omics Pro2 小时前
虚拟细胞:开启HIV/AIDS治疗新纪元的关键?
大数据·数据库·人工智能·深度学习·算法·机器学习·计算机视觉