You've already forked www.colben.cn
update
This commit is contained in:
217
content/post/mongodb.md
Normal file
217
content/post/mongodb.md
Normal file
@@ -0,0 +1,217 @@
|
||||
---
|
||||
title: "Mongodb 笔记"
|
||||
date: 2019-10-30T10:56:11+08:00
|
||||
lastmod: 2019-10-30T10:56:11+08:00
|
||||
keywords: []
|
||||
tags: ["mongodb"]
|
||||
categories: ["database"]
|
||||
---
|
||||
|
||||
# 数据迁移
|
||||
### 导出集合数据到 json 或 csv 文件
|
||||
- 命令
|
||||
```
|
||||
mongoexport -d dbname -c collectionname -o file --type json/csv -f "field1,field2,...,fieldN"
|
||||
```
|
||||
- 参数
|
||||
- -d 数据库名
|
||||
- -c 集合名
|
||||
- -o 输出文件名
|
||||
- --type 输出格式,默认 json
|
||||
- -f 输出字段,如果导出 csv,需指定字段名
|
||||
|
||||
### 导入数据到集合
|
||||
- 命令
|
||||
```
|
||||
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f "field1,field2,...,fieldN"
|
||||
```
|
||||
- 参数
|
||||
- -d 数据库名
|
||||
- -c 集合名
|
||||
- --type 导入格式,默认 json
|
||||
- -f 导入的字段名
|
||||
- --headerline 导入csv时,使用第一行的标题作为导入字段
|
||||
- --file 导入的文件
|
||||
|
||||
### 备份数据库
|
||||
- 命令
|
||||
```
|
||||
mongodump -h dbhost -d dbname -o backup_dir
|
||||
```
|
||||
- 参数
|
||||
- -h ip[:port]
|
||||
- -d 数据库名
|
||||
- -o 备份数据存放目录,需提前建立
|
||||
|
||||
### 恢复数据库
|
||||
- 命令
|
||||
```
|
||||
mongorestore -h dbhost -d dbname --dir backup_dir
|
||||
```
|
||||
- 参数
|
||||
-h ip[:port]
|
||||
-d 数据库名
|
||||
--dir 备份数据存放目录
|
||||
--drop 恢复前,先删除当前数据
|
||||
|
||||
|
||||
# 操作数据库
|
||||
- 默认数据库 test
|
||||
- 创建 use dbname
|
||||
- 查看当前选择的数据库 db
|
||||
- 查看数据库列表 show dbs,不显示空数据库
|
||||
- 删除数据库 use dbname; db.dropDatabase()
|
||||
|
||||
# 操作集合
|
||||
### 创建
|
||||
```
|
||||
db.createCollection("集合名", {capped:false, autoIndexId:false, size:最大字节, max:文档最多数量})
|
||||
# 或者在插入文档时自动创建
|
||||
db.集合名.inert({})
|
||||
```
|
||||
|
||||
### 删除
|
||||
```
|
||||
db.集合名.drop()
|
||||
```
|
||||
|
||||
# 操作文档
|
||||
### insert
|
||||
- 插入一个文档
|
||||
```
|
||||
db.集合名.insert({})
|
||||
# 或者
|
||||
db.集合名.insertOne({})
|
||||
```
|
||||
- 插入多个文档
|
||||
```
|
||||
db.集合名.insert([{},{},{},...,{}])
|
||||
# 或者
|
||||
db.集合名.insertMany([{},{},{},...,{}])
|
||||
```
|
||||
|
||||
### find
|
||||
- 查询匹配的文档
|
||||
```
|
||||
db.集合名.find({}).pretty()
|
||||
```
|
||||
- 查询,只返回一个文档
|
||||
```
|
||||
db.集合名.findOne({})
|
||||
```
|
||||
- 相等 {"key":"value"}
|
||||
- 小于 {"key":{$lt:"value"}}
|
||||
- 小于等于 {"key":{$lte:"value"}}
|
||||
- 大于 {"key":{$gt:"value"}}
|
||||
- 大于等于 {"key":{$gte:"value"}}
|
||||
- 不等于 {"key":{$ne:"value"}}
|
||||
- and {$and:[{},{}]}
|
||||
- or {$or:[{},{}]}
|
||||
- 投影
|
||||
```
|
||||
db.集合名.find({},{"key1":1,"key2":0 ...})
|
||||
```
|
||||
- 限制返回文档数量
|
||||
```
|
||||
db.集合名.find({}).limit(N)
|
||||
```
|
||||
- 跳过返回文档数量
|
||||
```
|
||||
db.集合名.find({}).limit(N).skip(N)
|
||||
```
|
||||
- 排序,1升序,-1降序
|
||||
```
|
||||
db.集合名.find({}).sort({"key":1})
|
||||
```
|
||||
|
||||
### update
|
||||
- 更新一个文档
|
||||
```
|
||||
db.集合名.update({},{$set:{}})
|
||||
```
|
||||
- 更新多个文档
|
||||
```
|
||||
db.集合名.update({},{$set:{},{multi:true}})
|
||||
```
|
||||
|
||||
### save
|
||||
```
|
||||
db.集合名.save({,...})
|
||||
```
|
||||
|
||||
### remove
|
||||
- 删除多条记录
|
||||
```
|
||||
db.集合名.remove({})
|
||||
```
|
||||
- 删除一条记录
|
||||
```
|
||||
db.集合名.remove({},1)
|
||||
```
|
||||
- 删除集合中的所有文档,相当于 truncate
|
||||
```
|
||||
db.集合名.remove()
|
||||
```
|
||||
|
||||
### 索引
|
||||
- 创建索引,1升序,-1降序
|
||||
```
|
||||
db.集合名.createIndex({"key1":1,"key2":-1})
|
||||
```
|
||||
|
||||
### 聚合
|
||||
```
|
||||
db.集合名.aggregate([{}])
|
||||
```
|
||||
|
||||
# 用户
|
||||
### 创建用户
|
||||
- 管理员权限
|
||||
```
|
||||
use admin
|
||||
db.createUser(
|
||||
{
|
||||
user: "username",
|
||||
pwd: "password",
|
||||
roles: [{role: "root", db: "admin"}]
|
||||
}
|
||||
)
|
||||
```
|
||||
- 测试库读写权限
|
||||
```
|
||||
use testdb
|
||||
db.createUser(
|
||||
{
|
||||
user: "username",
|
||||
pwd: "password",
|
||||
roles: ["readWrite"]
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
### 验证身份
|
||||
```
|
||||
db.auth("username", "password")
|
||||
```
|
||||
|
||||
### 列出所有用户
|
||||
```
|
||||
db.getUsers()
|
||||
```
|
||||
|
||||
### 删除数据库用户
|
||||
```
|
||||
use testdb
|
||||
db.dropUser("username")
|
||||
```
|
||||
|
||||
### 更改用户密码
|
||||
```
|
||||
db.updateUser(
|
||||
"username",
|
||||
{
|
||||
pwd: "new_password"
|
||||
}
|
||||
)
|
||||
```
|
||||
|
Reference in New Issue
Block a user