MongoDB >> MongoDB基本操作

一、操作mongodb数据库
  • 1、创建数据库

    • 语法: use 数据库名
    • 注意1:数据库不存在则创建,否则切换到指定数据库
    • 注意2:新创建db若不在列表内,如要显示它,则需在新db数据库中插入一些数据。如下:
    (db.person.insert({name: 'a', age: 1, sex: 'man'})
    
  • 2、删除数据库

    • 前提: 使用当前数据库(use 数据库名)
    db.dropDatabase()
    
  • 3、查看所有数据库列表

    show dbs 
    
  • 4、查看当前正在使用的数据库

    • a: db
    • b: db.getName()
  • 5、断开连接

    • exit
  • 6、查看命令api

    • help
二、集合操作
  • 1、查看当前数据库下有哪些集合
    show collections

  • 2、创建集合(两种方法)

    • a:
      • 语法:
        db.createCollecion("集合名")

      • 示例:
        db.createCollection("job")

    • b:
      • 语法:
        db.集合名.insert(document)

      • 示例:
        db.job.insert({name: 'a', job: 'baby'})

    • 区别:前者只创建空的集合,后者再创建空集合的同时添加了一个文档
  • 3、删除当前数据库的集合

    • 语法:db.集合名.drop()
    • 示例:db.job.drop()
三、文档操作
  • 1、插入文档

    • a: 使用insert()方法插入文档

      • 语法: db.集合名.insert(文档)
      • 插入单个:
      db.person.insert({name: 'b', age: 3, sex: 'woman'})
      
      • 语法: db.集合名.insert([文档1,文档2])
      • 插入多个
      db.person.insert([{name: 'a', age: 1, sex: 'man'}, {name: 'b', age: 3, sex: 'woman'}])
      
    • b: 使用save()方法插入文档

      • 语法:db.集合名.save(文档)

      • 说明:

        • save()中不指定_id字段时,方法类似于insert()
        • 若指定已有的_id字段,则会更新_id字段对应的数据
      • 示例:

        • a:
        db.person.save({name: 'c', age: 18, sex: 'woman'})
        
        • b:
        db.person.save({_id:ObjectId("5ac1ef83df74c63a9bfc2d33"), name: "c", age: 18, sex: 'man'})
        
  • 2、文档更新

    • a:update()方法用于更新已存在的文档

      • 语法:
          db.集合名.update(
              <query>
              <update>,
              {
               upset:<boolean>,
               multi:<boolean>,
               writeConcern:<document>
              }
      
          )
      
      • 参数说明:

        • query:update的查询条件,类似于sql里update语句内where后面的内容。
        • update:update的对象和一些更新的操作符( s e t , set, set,inc)
        • upset:可选,如不存在update的记录,是否当新数据插入,true为插入,false为不插入,默认false。
        • multi:可选,mongodb默认为false,只更新找到的第一条记录,若为true,按条件找出的数据全部更新。
      • 需求:将name=a的status改为inactive.

      • 示例:

      • $set

        • 单个修改
        db.person.update({name: 'c'},{$set: {sex: 'woman'}})
        
        • 全修改 (multi: true)
        db.person.update({sex: 'woman'},{$set: {sex: 'man'}},{multi: true})
        
      • $inc (累加修改)

      db.person.update({name: 'a'},{$inc: {age: 10}})
      
    • b:save()方法通过传入的文档替换已有文档。

      • 语法:
      db.集合名.save(
          document,
          {
              writeConcern:<document>
          }
      )
      
      • 参数说明:
        • document: 文档数据
        • writeConcern: 可选,抛出异常的级别
  • 3、文档删除

    • 说明:再执行remove()函数前,先执行find()命令来判断执行的条件是否存在是一个良好习惯。
    • 语法:
    db.集合名.remove(
        query,
        {
            justOne:<boolean>,
            writeConcern:<document>
        }
    )
    
    • 参数说明:

      • query:
        删除的文档的条件。
        • 注意:当query为"{}"时,清空集合。
      • justOne: 可选,如果为true或1,则只删除一个文档
    • 示例:

      • query:
      db.person.remove({name: 'a'})
      
      • query为"{}"
      db.person.remove({})
      
      • justOne:
      db.person.remove({sex: 'man'}, {justOne: true})
      
  • 4、文档查询

    • a: find()方法:
      • 语法:db.集合名.find()
      • 查询集合下所有的文档(数据):db.person.find()
    • b: find()方法查询指定列
      • 语法:
      db.集合名.find(
          query,
          {
              <key1>:1,
              <key2>:1
          }
      )
      
      • 参数说明:

        • query: 可选,查询条件,为空或"{}"时,显示所有。
        • key: 可选,要显示的字段,1为显示,0为不显示
      • 注意:

        • 不指定query条件,但限制显示字段时(也可以限制不显示字段),query必须为"{}"。
         db.person.find(
            {},
            {
                age: 1, 
                sex: 1
            }
        )
        
        • 指定query条件,但不限制显示字段时
        db.person.find(
            {
                sex: 'man'
            }
        )
        
        • 过滤掉_id(主键)显示
        db.person.find(
            {},
            {
                _id: 0
            }
        )
        
      • c: pretty()方法以格式化形式显示文档

        • 示例:
        db.person.find().pretty()
        
      • d: findOne()方法查询匹配结果的第一条数据

        • 示例:
        db.person.findOne({sex: 'man'})
        
  • 5、查询条件操作符

    • 作用:条件操作符用于比较两个表达式并从mongodb的集合中获取数据。

    • a:大于 - $gt

      • 语法:
      db.集合名.find(
          {
              <key>:{
                  $gt: <value>
              }
          }
      )
      
      • 示例:
      > db.person.find({age:{$gt: 10}})
      { "_id" : ObjectId("5ac31a0f53013aafa493cf1b"), "name" : "b", "age" : 12, "sex" : "woman" }
      { "_id" : ObjectId("5ac31d2153013aafa493cf1c"), "name" : "c", "age" : 15, "sex" : "man" }
      
    • b:大于等于 - $gte

      • 语法:
        db.集合名.find({<key>:{$gte:<value>}})
    • c:小于 - $lt

      • 语法:
        db.集合名.find({<key>:{$lt:<value>}})
    • d:小于等于 - $lte

      • 语法:
        db.集合名.find({<key>:{$lte:<value>}})
    • e:大于等于 和 小于等于 - $gte 和 $lte

      • 语法:
        db.集合名.find({<key>:{$gte:<value>, $lte:<value>}})

      • 示例:

      > db.person.find({age:{$gte: 15, $lte: 16}})
      { "_id" : ObjectId("5ac31d2153013aafa493cf1c"), "name" : "c", "age" : 15, "sex" : "man" }
      
    • f:等于 - :

      • 语法:
        db.集合名.find({<key>:<value>})
    • g:使用_id进行查询

      • 语法:
        db.集合名.find({"_id": ObjectId("id值")})
      • 示例:
      > db.person.find({'_id': ObjectId("5ac31d2153013aafa493cf1c")})
      { "_id" : ObjectId("5ac31d2153013aafa493cf1c"), "name" : "c", "age" : 15, "sex" : "man" }
      
    • h:查询某个结果集的数据条数

      • 语法:
        db.集合名.find().count()
      • 示例:
      > db.person.find({'age':{$lte:12}}).count()
      2
      
    • i:查询某个字段的值当中是否包含另一个值

      • 语法:
        db.集合名.find({<key>:/str/})
      • 示例:
      > db.person.find({'sex':/man/})
      { "_id" : ObjectId("5ac31a0f53013aafa493cf1a"), "name" : "a", "age" : 1, "sex" : "man" }
      { "_id" : ObjectId("5ac31a0f53013aafa493cf1b"), "name" : "b", "age" : 12, "sex" : "woman" }
      { "_id" : ObjectId("5ac31d2153013aafa493cf1c"), "name" : "c", "age" : 15, "sex" : "man" }
      
    • j:查询某个字段的值是否以另一个值开头

      • 语法:
        db.集合名.find({<key>:/^str/})

      • 示例:

      > db.person.find({'sex':/^wo/})
      { "_id" : ObjectId("5ac31a0f53013aafa493cf1b"), "name" : "b", "age" : 12, "sex" : "woman" }
      
  • 6、条件查询and 和 or

    • a:AND条件

      • 语法:
        db.集合名.find({条件1,条件2,...,条件n}})
      • 示例:
      > db.person.find({'sex':'man',age:{$gt:10}})
      { "_id" : ObjectId("5ac31d2153013aafa493cf1c"), "name" : "c", "age" : 15, "sex" : "man" }
      
    • b:OR条件

      • 语法:
      db.集合名.find(
          {
              $or:[{条件1},{条件2},...,{条件n}]
          }
      )
      
      • 示例:
      > db.person.find({$or:[{'sex':'woman'},{age:{$lt:10}}]})
      { "_id" : ObjectId("5ac31a0f53013aafa493cf1a"), "name" : "a", "age" : 1, "sex" : "man" }
      { "_id" : ObjectId("5ac31a0f53013aafa493cf1b"), "name" : "b", "age" : 12, "sex" : "woman" }
      
    • c:AND和OR联合使用

      • 语法:
      db.集合名.find(
          {
              条件1,
              条件2,
              $or:[{条件3},{条件4}]
          }
      )
      
      • 示例:
      > db.person.find({'sex':'woman',$or:[{'age':{$lte:10}},{'age':{$gt:10}}]})
      { "_id" : ObjectId("5ac31a0f53013aafa493cf1b"), "name" : "b", "age" : 12, "sex" : "woman" }
      
  • 7、limit、skip

    • a、limit():读取指定数量的数据记录
      db.person.find().limit(1)

    • b、skip():跳过指定数量的数据
      db.person.find().skip(1)

    • c、skip与limit联合使用
      通常用这种方式实现分页功能
      示例:

      # 不断迭代skip值以实现分页功能
      > db.person.find().skip(0).limit(1)
      { "_id" : ObjectId("5ac31a0f53013aafa493cf1a"), "name" : "a", "age" : 1, "sex" : "man" }
      
      > db.person.find().skip(1).limit(1)
      { "_id" : ObjectId("5ac31a0f53013aafa493cf1b"), "name" : "b", "age" : 12, "sex" : "woman" }
      
      > db.person.find().skip(2).limit(1)
      { "_id" : ObjectId("5ac31d2153013aafa493cf1c"), "name" : "c", "age" : 15, "sex" : "man" }
      
  • 8、排序

    • 语法:
      db.集合名.find().sort({<key>:1|-1})
    • 示例:
    # 升序
    > db.person.find().sort({'age':1})
    { "_id" : ObjectId("5ac31a0f53013aafa493cf1a"), "name" : "a", "age" : 1, "sex" : "man" }
    { "_id" : ObjectId("5ac31a0f53013aafa493cf1b"), "name" : "b", "age" : 12, "sex" : "woman" }
    { "_id" : ObjectId("5ac31d2153013aafa493cf1c"), "name" : "c", "age" : 15, "sex" : "man" }
    
    # 降序
    > db.person.find().sort({'age':-1})
    { "_id" : ObjectId("5ac31d2153013aafa493cf1c"), "name" : "c", "age" : 15, "sex" : "man" }
    { "_id" : ObjectId("5ac31a0f53013aafa493cf1b"), "name" : "b", "age" : 12, "sex" : "woman" }
    { "_id" : ObjectId("5ac31a0f53013aafa493cf1a"), "name" : "a", "age" : 1, "sex" : "man" }
    
    • 注意:1表示升序,-1表示降序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值