简介
关系型数据库
- 数据库 --> 表 --> 记录
MongoDB
- 数据库 --> 集合 --> 文档
- 在MongoDB中如果是一个空的数据库, 空的集合, 是不显示的, 只集合中有文档数据才显示出来
- 应用场景: 对数据量要求大, 对事务(原子性)要求不高
下载安装
- https://www.mongodb.com/download-center/community
- 解决下载慢的问题: https://blog.csdn.net/qq_33430083/article/details/89453617
- centos安装MongoDB: https://www.jb51.net/article/97907.htm
使用
数据库操作
- show dbs; # 查看所有数据库
- use database1; # 切换到database1数据库, 如果没有database1数据库则会创建
- db; # 查看当前使用的数据库
- db.dropDatabase(); # 删除当前数据库
集合操作
- db.collection1.insert({'a': 1}); # 创建集合collection1并往其中添加一条文档数据
- show collections; # 查看所有集合
- db.collection1.drop(); # 删除集合collection1
账号管理
- mysql创建的用户是在内置的mysql数据库的user表中
- MongoDB中的用户是与数据库关联的, 但是可以给一个数据库下的用户分配另一个数据库的权限
'''
# 创建root用户, 拥有所有数据库的所有权限
db.createUser(
{
user: "root",
pwd: "Cql123456",
roles: [ { role: "root", db: "admin" } ]
}
)
# 创建普通用户并指定权限
db.createUser(
{
user: "cql",
pwd: "Cql123456",
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "db1" } ]
}
)
# 管理员登录
mongo --host 10.0.0.5 --port 27017 -u "root" -p "123" --authenticationDatabase "admin"
# C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg
net:
port: 27017
bindIp: 0.0.0.0 # 允许外界任何ip连接
'''
文档操作
-
db.collection1.insert({...}); # 插入单条文档
-
db.collection1.insertMany([{...}, {...}, ...]); # 插入多条文档
-
db.collection1.save({"_id": 1, ...}); # 修改
-
比较运算
''' MySQL: select * from teacher where name = "lqz"; MongoDB: db.teacher.find({"name": "lqz"}).pretty(); MySQL: select * from teacher where name != "lqz"; MongoDB: db.teacher.find({"name": {"$ne": "lqz"}}).pretty(); # $ne: not equal, $gt: greater than, $lte: less than equal '''
-
逻辑运算
-
待续
分布式id生成的方案
- 待续