2021-11-14 15:52:46 +08:00

4.1 KiB
Raw Permalink Blame History

title, date, lastmod, keywords, tags, categories
title date lastmod keywords tags categories
Mongodb 笔记 2019-10-30T10:56:11+08:00 2019-10-30T10:56:11+08:00
mongodb
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"
    }
)