MongoDB基础学习笔记

时间:2021-12-09 00:20:36

MongoDB基础学习笔记

数据库操作

  • 创建、转到:use <database name>
  • 当前数据库:db
  • 所有数据库(新建的数据库要插入数据才会显示):show db
  • 删除数据库:db.dropDatabase()

集合操作

  • 所有集合:show tables
  • 删除集合:db.<table name>.drop()

文档操作

  • 插入数据(集合不存在自动创建):db.<table name>.insert({"col name":"value"})
  • 查询文档:db.<table name>.find()
  • 插入或更新(指定_id则是更新):db.<table name>.save({"col name":"value"})
  • 插入多条(3.2版本以上):

    db.<table name>.insertOne({"a": 3})
    db.<table name>.insertMany([{"b": 3}, {'c': 4}])
  • 更新文档:

    db.<table name>.update(
    <query>, //查询条件
    <update>, //更新内容
    {
    upsert: <boolean>, //不存在是否插入
    multi: <boolean>, //只更新找到的第一条记录
    writeConcern: <document> //抛出异常的级别
    }
    )

    db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})

    //只更新第一条记录
    db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
    //全部更新
    db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
    //只添加第一条
    db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
    //全部添加加进去
    db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
    //全部更新
    db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
    //只更新第一条记录
    db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
  • 删除文档

    db.<table name>.remove(
    <query>, //(可选)删除的文档的条件
    {
    justOne: <boolean>, //(可选)如果设为 true 或 1,则只删除一个文档
    writeConcern: <document> //(可选)抛出异常的级别
    }
    )
    //删除title为123的数据
    db.col.remove({'title':'123'})
    //删除所有数据
    db.col.remove({})

数据查询

  • 查询语法

    //查询,query条件,projection返回的键/列
    db.collection.find(query, projection)
    //pretty,以格式化的方式来显示结果
    db.col.find().pretty()
  • 操作符条件

    操作 格式 范例
    等于 {<key>:<value>} db.col.find({"by":"123"}).pretty()
    小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty()
    小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty()
    大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty()
    大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty()
    不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty()
  • and、or

    db.col.find({key1:value1, key2:value2}).pretty()

    db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty()
  • 类型匹配

    db.col.find({"title" : {$type : 2}})
    类型 数字 类型 数字
    Double 1 Regular Expression 11
    String 2 JavaScript 13
    Object 3 Symbol 14
    Array 4 JavaScript (with scope) 15
    Binary data 5 32-bit integer 16
    Undefined(已废弃) 6 Timestamp 17
    Object id 7 64-bit integer 18
    Boolean 8 Min key(Query with -1) 255
    Date 9 Max key 127
    Null 10 - -
  • Limit与Skip

    //查询结果前2
    db.col.find({},{"title":1,_id:0}).limit(2)
    //跳过查询结果1
    db.col.find({},{"title":1,_id:0}).skip(1)
    //分页第2页,每页10
    db.col.find({},{"title":1,_id:0}).limit(10).skip(10)
  • 排序

    //语法,1为升序,-1为降序
    db.COLLECTION_NAME.find().sort({KEY:1})
    //例
    db.col.find({},{"title":1,_id:0}).sort({"likes":-1})

备份与恢复

  • 备份

    //-h:MongDB所在服务器地址;-d:需要备份的数据库实例;-o:备份的数据存放位置
    mongodump -h dbhost -d dbname -o dbdirectory
    语法 描述 实例
    mongodump –host HOST_NAME –port PORT_NUMBER 该命令将备份所有MongoDB数据 mongodump –host 10.0.3.1 –port 27017
    mongodump –dbpath DB_PATH –out BACKUP_DIRECTORY - mongodump –dbpath /data/db/ –out /data/backup/
    mongodump –collection COLLECTION –db DB_NAME 该命令将备份指定数据库的集合。 mongodump –collection mycol –db test
  • 恢复

    //语法,--host <:port>, -h <:port>:服务器地址;--db , -d:数据库实例;
    //--drop:删除备份后添加修改的数据;<path>:备份数据所在位置;
    //--dir:指定备份目录,与<path>选其一
    mongorestore -h <hostname><:port> -d dbname <path>