美文网首页
mongoDB 基本使用

mongoDB 基本使用

作者: Air_cc | 来源:发表于2016-06-25 18:18 被阅读50次

    数据库帐号的创建与使用

    // mongodb 未开auth时 创建超级管理员
    mongo --port 27017
    use admin
    db.createUser({user: 'root', pwd: 'root', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]})
    
    
    // 停止mongodb
    kill -2 pid 或 db.shutdownServer() 
    
    // 重启mongodb 开启auth
    mongo --auth --port 27017
    use admin
    db.auth('root', 'root')
    
    // 切换到普通db
    use students
    db.createUser({user: 'std', pwd: 'stdpwd', roles: [role: 'readWrite', db: 'students']})
    
    // 其他操作
    db.getUser('std');
    db.system.users.find({});  or show users
    show collections
    // 删除某个collection
    db.collectionName.drop()
    
    // 之后访问相应的数据库
    mongo mongodb://std:stdpwd@120.12.12.1:27017/student
    
    

    参考
    不知博客
    官方说明

    数据的备份还原

    // 备份数据, 使用mongodump
    mongodump -h dbhost:27017 -d dbname -u username -p password -o dbdirectory
    
    // 还原数据
    mongorestore -h dbhost:27017 -d dbname -u username -p password dbdata
    

    数据导入与导出

    数据导出

    mongoexport --host monogo_address --db db_name --collection collection_name --out output_file_name  --fields "field_1, field_2"  --type output_type_like_csv_default_json  --jsonArray  --limit limit_count --skip skip_count
    

    注意:

    1. 导出类型为json时导出的数据中必然包括 _id 字段, 可设置 --jsonArray 将数据从 {}{}{} 转成 [{},{},{}]
    2. 导出类型为csv时必须指定 --fields

    数据导入

    mongoimport -h monogo_address --db db_name --collection collection_name --file output_file_name --type csv|json(default) --fields "field_1, field_2"
    

    数组的更新

    // collection 单条实例数据结构
    {
      _id: '123',
      arr: [
        {name: 'a', age: 12, courses: [{name: 'c++', grade: 123}]},
        {name: 'b', age: 13},
      ],
    }
    

    添加obj到数组

    • 添加不重复的obj --$addToSet
      db.collection.update({_id: '123'}, {$addToSet: {arr: {name: 'c', age: 14}}})
    • 添加可重复的obj -- $push
      严格匹配:db.collection.update({_id: '123'}, {$push: {arr: {name: 'a', age: 12}}})

      匹配存在:``
    • 一次添加多个obj --$push $each
      db.collection.update({_id: '123'}, {$push: {arr: {$each: [{name: 'd', age: 15}, {name: 'e', age: 16}]}}})

    $each还可配合其他操作符使用:

    • 设置数组的排序 $sort
      db.collection.update({_id: '123'}, {$push: {arr: {$each: [{name: 'd', age: 15}, {name: 'e', age: 16}], $sort: {age: -1} }}}) 设置数组按age由大到小排
    • 设置插入的位置 $position
      db.collection.update({_id: '123'}, {$push: {arr: {$each: [{name: 'd', age: 15}, {name: 'e', age: 16}], $position: 2 }}}) 设置插入的位置在index为2处)
    • 设置数组的切除 $slice
      db.collection.update({_id: '123'}, {$push: {arr: {$each: [{name: 'd', age: 15}, {name: 'e', age: 16}], $slice: -3 }}}) 设置只留下后三个)

    从数组中删除特定obj

    db.collection.update({_id:'123'}, {$pull: {name: 'a', age: 12}}})

    更新数值中特定对象的特定key

    • 一维数组
      db.collection.update({_id: '123', 'arr.name': 'a'}, {$set: {'arr.$.age': 13}}})
    • 多维数组
      db.collection.update({_id: '123', 'arr.0.courses.0.name': 'c++'}, {$inc: {arr.0.courses.0.grade: 10}})

    插入数据

    • 批量插入数据 (mongoDB V3.2)
      db.collections.insertmany()

    相关文章

      网友评论

          本文标题:mongoDB 基本使用

          本文链接:https://www.haomeiwen.com/subject/bstchttx.html