数据迁移

导出集合数据到 json 或 csv 文件

  • 命令

    1
    
    mongoexport -d dbname -c collectionname -o file --type json/csv -f "field1,field2,...,fieldN"
  • 参数

    • -d 数据库名
    • -c 集合名
    • -o 输出文件名
    • –type 输出格式,默认 json
    • -f 输出字段,如果导出 csv,需指定字段名

导入数据到集合

  • 命令

    1
    
    mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f "field1,field2,...,fieldN"
  • 参数

    • -d 数据库名
    • -c 集合名
    • –type 导入格式,默认 json
    • -f 导入的字段名
    • –headerline 导入csv时,使用第一行的标题作为导入字段
    • –file 导入的文件

备份数据库

  • 命令

    1
    
    mongodump -h dbhost -d dbname -o backup_dir
  • 参数

    • -h ip[:port]
    • -d 数据库名
    • -o 备份数据存放目录,需提前建立

恢复数据库

  • 命令

    1
    
    mongorestore -h dbhost -d dbname --dir backup_dir
  • 参数 -h ip[:port] -d 数据库名 –dir 备份数据存放目录 –drop 恢复前,先删除当前数据

操作数据库

  • 默认数据库 test
  • 创建 use dbname
  • 查看当前选择的数据库 db
  • 查看数据库列表 show dbs,不显示空数据库
  • 删除数据库 use dbname; db.dropDatabase()

操作集合

创建

1
2
3
db.createCollection("集合名", {capped:false, autoIndexId:false, size:最大字节, max:文档最多数量})
# 或者在插入文档时自动创建
db.集合名.inert({})

删除

1
db.集合名.drop()

操作文档

insert

  • 插入一个文档

    1
    2
    3
    
    db.集合名.insert({})
    # 或者
    db.集合名.insertOne({})
  • 插入多个文档

    1
    2
    3
    
    db.集合名.insert([{},{},{},...,{}])
    # 或者
    db.集合名.insertMany([{},{},{},...,{}])

find

  • 查询匹配的文档

    1
    
    db.集合名.find({}).pretty()
  • 查询,只返回一个文档

    1
    
    db.集合名.findOne({})
    • 相等 {“key”:“value”}
    • 小于 {“key”:{$lt:“value”}}
    • 小于等于 {“key”:{$lte:“value”}}
    • 大于 {“key”:{$gt:“value”}}
    • 大于等于 {“key”:{$gte:“value”}}
    • 不等于 {“key”:{$ne:“value”}}
    • and {$and:[{},{}]}
    • or {$or:[{},{}]}
  • 投影

    1
    
    db.集合名.find({},{"key1":1,"key2":0 ...})
  • 限制返回文档数量

    1
    
    db.集合名.find({}).limit(N)
  • 跳过返回文档数量

    1
    
    db.集合名.find({}).limit(N).skip(N)
  • 排序,1升序,-1降序

    1
    
    db.集合名.find({}).sort({"key":1})

update

  • 更新一个文档

    1
    
    db.集合名.update({},{$set:{}})
  • 更新多个文档

    1
    
    db.集合名.update({},{$set:{},{multi:true}})

save

1
db.集合名.save({,...})

remove

  • 删除多条记录

    1
    
    db.集合名.remove({})
  • 删除一条记录

    1
    
    db.集合名.remove({},1)
  • 删除集合中的所有文档,相当于 truncate

    1
    
    db.集合名.remove()

索引

  • 创建索引,1升序,-1降序

    1
    
    db.集合名.createIndex({"key1":1,"key2":-1})

聚合

1
db.集合名.aggregate([{}])

用户

创建用户

  • 管理员权限

    1
    2
    3
    4
    5
    6
    7
    8
    
    use admin
    db.createUser(
        {
            user: "username",
            pwd: "password",
            roles: [{role: "root", db: "admin"}]
        }
    )
  • 测试库读写权限

    1
    2
    3
    4
    5
    6
    7
    8
    
    use testdb
    db.createUser(
        {
            user: "username",
            pwd: "password",
            roles: ["readWrite"]
        }
    )

验证身份

1
db.auth("username", "password")

列出所有用户

1
db.getUsers()

删除数据库用户

1
2
use testdb
db.dropUser("username")

更改用户密码

1
2
3
4
5
6
db.updateUser(
    "username",
    {
        pwd: "new_password"
    }
)