1.安装(Ubuntu)
1.1.安装gnupg
sudo apt-get install gnupg
1.2.获取GPG Key
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
--dearmor
1.3.创建本地文件
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
1.4.更新系统
sudo apt-get update
1.5.安装mongodb
sudo apt-get install -y mongodb-org
1.6.启动mongodb
sudo systemctl start mongod
或者重启
sudo systemctl restart mongod
停止命令
sudo systemctl stop mongod
1.7.查询状态
sudo systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2023-04-24 14:32:14 CST; 14s ago
Docs: https://docs.mongodb.org/manual
Main PID: 63530 (mongod)
Memory: 65.3M
CGroup: /system.slice/mongod.service
└─63530 /usr/bin/mongod --config /etc/mongod.conf
4月 24 14:32:14 szx5apln622219 systemd[1]: Started MongoDB Database Server.
1.8.Robo3t 可视化工具
sudo snap install robo3t-snap
2.使用
2.1.登录
mongosh
2.2.数据库
2.2.1.创建数据库
use mydatabase
2.2.2.删除数据库
db.dropDatabase()
删除当前数据库
2.3.创建用户
db.createUser({user:"root",pwd:"root",roles:[{"role":"userAdmin","db":"admin"},{"role":"root","db":"admin"},{"role":"userAdminAnyDatabase","db":"admin"}]})
2.4.集合
2.4.1.创建集合
相当于表
db.createCollection(name, options)
其中options为可选项, 通常不设置, 如:
db.createCollection('reel')
2.4.2.删除集合
db.reel.drop()
3.CURD
3.1.插入数据
db.reel.insertOne({reel_id: 'X0001', name: 'R_1', qty: 100})
db.reel.insertMany([{reel_id: 'X0001', name: 'R_1', qty: 100},{reel_id: 'X0002', name: 'R_2', qty: 50}])
或者insert 方法已经过时
db.reel.insert({reel_id: 'X0001', name: 'R_1', qty: 100})
或者
db.reel.save({reel_id: 'X0001', name: 'R_1', qty: 100})
如果集合reel沒有在2.4创建, 则reel当插入数据之后就会自动创建
3.2.查询
3.2.1.查询所有数据
db.reel.find()
3.3.修改
3.3.1.update(已过时)
db.reel.update({reel_id: "X0001"}, {$set:{name:"RR_1"}},{multi:true})
第一个json, 是查询的条件
第二个json里面$set为需要设置的值, 满足条件的数据将被set为里面的值
第三个json, 有三个参数
upsert: 设置为true的时候, 意思是没有更新的数据,就插入一条, 默认false
multi: 设置为true的时候, 意思是更新多条, 默认false, 只更新找到的第一条
writeConcern:抛出异常的级别
3.3.2.updateOne
db.reel.updateOne({reel_id: "X0001"}, {$set:{name:"RR_1"}})
3.3.3.updateMany
db.reel.updateMany({reel_id: "X0001"}, {$set:{name:"RR_1"}})
3.3.2.save方法
db.reel.save({_id:ObjectId("64462d4c7f025efddf513e66"), reel_id: "X0001"}, {$set:{name:"RR_1"}})
_id 主键存在就更新,不存在就插入
3.4.删除
3.4.1.删除单个文档
db.reel.deleteOne({name:"RR_1"})
3.4.2.删除多个文档
db.reel.deleteMany({name:"RR_1"})
3.4.3.全部删除
db.reel.deleteMany({})
3.4.4.remove删除(不推荐使用)
3.4.4.1.删除单个
db.reel.remove({name:"RR_1"}, true)
或者
db.reel.remove({name:"RR_1"}, 1)
3.4.4.2.删除多个
db.reel.remove({name:"RR_1"})
3.4.4.3.删除所有数据
db.reel.remove({})
3.5. AND / OR / LIKE
3.5.1.AND
db.reel.find({reel_id:"X0001",name:"R_1"})
3.5.2.LIKE
3.5.2.1.like ‘%A%’
db.reel.find({name:/R/})
3.5.2.2.like ‘A%’
db.reel.find({name:/^R/})
3.5.2.3.like ‘%A’
db.reel.find({name:/1$/})
3.5.3.OR
db.reel.find({$or:[{reel_id:"X0001"},{name:"R_1"}]})
3.5.4.AND和OR联合使用
db.reel.find({qty: {$gt:50}, $or: [{reel_id: "X0001"},{name: "R_1"}]})
3.6.符号
3.6.1.等于
db.reel.find({name:'R_1'})
3.6.2.小于
db.reel.find({qty:{$lt:10}})
3.6.3.小于等于
db.reel.find({qty:{$lte:10}})
3.6.4.大于
db.reel.find({qty:{$gt:10}})
3.6.5.大于等于
db.reel.find({qty:{$gte:10}})
3.6.6.不等于
db.reel.find({qty:{$ne:10}})
3.2.7.类型操作符
db.col.find({"title" : {$type : 2}})
或者
db.col.find({"title" : {$type : 'string'}})
类型表
数字值 | 类型 |
---|---|
1 | double |
2 | string |
3 | object |
4 | array |
5 | binary data |
6 | undefined(已废弃) |
7 | object id |
8 | boolean |
9 | date |
10 | null |
11 | Regular Expression |
13 | JavaScript |
14 | Symbol |
15 | JavaScript (with scope) |
16 | 32-bit integer |
17 | timestamp |
18 | 64-bit integer |
255 / -1 | Min key |
127 | max key |
3.7.分页
db.reel.find().limit(10).skip(1)
limit为查询数量, skip为跳过指定数量的数据
3.8.排序
db.reel.find().sort({"qty": -1})
sort里面的key为排序的字段, -1为降序, 1为升序