MongoDB基本指令

  1. 查看所有的db

    show dbs

  2. 切换db

    user <db_name>

  3. 查看当前所在db名称

    db

  4. 删除db**(必须在要删除的db中操作)**

    db.dropDatabase()

  5. 查看db下所有的集合

    show tables

    show collections

  6. 创建集合

    • db.createCollection("abc")
    • db.createCollection("def", {capped: true, autoIndexId: true, size: 1024, max: 100})
    • 往一张不存在的集合中插入一条数据,会自动创建集合
      • db.test.insert({title: 123})
  7. 删除集合

    db.<collection_name>.drop()

    例:db.abc.drop()

  8. 插入文档

    • db.<collection_name>.insert({title: 1234})

    • doc=({title: 12345, name: "MongoDB指南"})

      db.<collection_name>.insert(doc)

    • db.<collection_name>.save({name: "MongoDB简单指令"}})

    • doc2=({name: "MongoDB从入门到放弃"})

      db.<collection_name>.save(doc2)

    • doc3=({_id: "edrftgyhjkgjhfgv2ryuoio", name: "MongoDB从入门到放弃"})

      db.<collection_name>.save(doc3)// 若_id对应值的数据已经存在,则更新这条数据,否则新增一条数据

  9. 更新文档

    • db.<collection_name>.update({title: 1234}, {$set:{title: "4321"}})

    格式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    db.<collection_name>.update(
    <where>,// 相当于MySQL的where
    <update>,// 相当于MySQL的update语句的set,需要跟一些指令:$,$inc,$set
    {
    upsert: true,// true:如果不存在记录,则新增;false相反,默认
    multi: true,// true:只更新第一条匹配的记录;false相反,全部更新, 默认
    writeConcern: <document>// 异常级别
    }
    )

    案例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    > 1. 只更新第一条记录:
    > db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
    > 2. 全部更新:
    > db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
    > 3. 只添加第一条:
    > db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
    > 4. 全部添加进去:
    > db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
    > 5. 全部更新:
    > db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
    > 6. 只更新第一条记录:
    > db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
    >
    • db.<collection_name>.save()

      调用save指令一般需要指定_id

  10. 删除文档

    db.<collection_name>.remove({title: "4321"}, true)

    格式

    1
    2
    3
    4
    db.<collection_name>.remove(
    <where>,// 相当于MySQL的where
    <justOne>// true:只删除一条匹配条件的数据;false:匹配条件的数据全部删除,默认
    )
    • 删除集合中所有数据

      db.<collection_name>.remove({})

    • 新函数:

      • db.<collection_name>.deleteMany({})
      • db.<collection_name>.deleteOne({title: "12345"})
  11. 查询文档

    1. 普通查询

    格式:

    1
    2
    3
    4
    5
    > db.<collection_name>.find(
    > <where>, // 查询条件
    > <colName>// 返回字段名称
    > )
    >
    • 创建一个集合,插入三条数据
    1
    db.user.insert([{name: "cc", age: "29", gender: 1}, {name: "ccc", age: "30", gender: 2}, {name: "c", age: "28", gender: 1}])
    • 查询集合中全部数据

      普通显示:db.user.find()

      格式化显示:db.user.find().pretty()

    • 查询name="c"的信息

      db.user.find({name: "c"}).pretty()

    • 查询只返回第一个匹配到的数据

      db.user.findOne({name: "c"})

    1. AND查询

      db.user.find({key: value, key: value})

      And查询即是在where条件里面用逗号","分隔

      栗子:

      1
      2
      3
      4
      5
      6
      > db.user.find({name:"cc", gender:1})
      >
      > ---
      > 等同于MySQL:
      > select * from user where name = "c" AND gender = 1
      >
    2. OR查询

      db.user.find({$or:[{key:value}, {key:value}]})

      栗子:

      1
      2
      3
      4
      5
      6
      7
      8
      > db.user.find({
      > $or:[{name:"c"}, {gender:2}]
      > })
      >
      > ---
      > 等同于MySQL:
      > select * from user where name = "c" OR gender = 2
      >
    3. AND和OR组合查询

      db.user.find({key:value, $or:[{key:value}, {key:value}]})

      栗子:

      1
      2
      3
      4
      5
      6
      > db.user.find({gender:1, $or:[{name: "c"}, {age: "28"}]})
      >
      > ---
      > 等同于MySQL:
      > select * from user where gender = 1 AND (name = "c" OR age = "28")
      >

    运算符

    运算符 格式 案例 MySQL对应语句
    等于 {key:value}
    {key:{$eq:value}}
    db.user.find({age:“29”})
    db.user.find({age:{$eq:“29”}})
    where age = “29”
    大于 {key:{$gt: value}} db.user.find({age:{$gt:“30”}}) where age > “30”
    小于 {key:{$lt: value}} db.user.find({age:{$lt: “30”}}) where age < “30”
    大于等于 {key:{$gte: value}} db.user.find({age:{$gte:“30”}}) where age >= “30”
    小于等于 {key:{$lte: value}} db.user.find({age:{$lte:“30”}}) where age <= “30”
    不等于 {key:{ne: value}} db.user.find({age:{$ne:“29”}}) where age != “30”
    1. 模糊查询

      • 查询age包含0的:db.user.find({age:/0/})
      • 查询age以2开头的:db.user.find({age:/^2/})
      • 查询age以8结束的:db.user.find({age:/8$/})
    2. 分页查询

      格式:

      1
      2
      3
      4
      5
      6
      > db.<collection_name>.find().limit(Number).skip(Number)
      >
      > ---
      > limit(Number)表示查询多少条数据
      > skip(Number)表示从第几条开始查询
      >
      • 查询一条数据

        • 第一种方法:db.user.findOne({})
        • 第二种方法:db.user.find({}).limit(1)
      • 从第二条数据开始查询一条数据

        db.user.find().limit(1).skip(2)

    3. 查询排序

      格式:

      1
      2
      3
      4
      5
      6
      7
      > db.<collection_name>.find().sort({<key_name>:-1/1})
      >
      > ---
      > <key_name>:排序字段
      > -1:倒序
      > 1:正序
      >
      • 按照年龄倒序

        db.user.find().sort({age:-1})

      • 按照年龄倒序、性别正序

        db.user.find().sort({age:-1, gender:1})