数据迁移

导出集合数据到 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"
    }
)