zoukankan      html  css  js  c++  java
  • MongoDB学习总结(二) —— 基本操作命令(增删改查)

      上一篇介绍了MongoDB在Windows平台下的安装,这一篇介绍一下MongoDB的一些基本操作命令。

      下面我们直奔主题,用简单的实例依次介绍一下。

    > 查看所有数据库 (show dbs)

     

    > 插入文档 (insert)

     格式:> db.COLLECTION_NAME.insert(document)

     所有存储在集合中的数据都是BSON格式。

     BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

     

     下面在student集合中插入两条数据。

     

     

     由于操作窗口是一个javascript shell,所以这里也可以使用js的写法。

     

     

     由于文档是采用"K-V"格式存储的,JSON里面的Value可以是字符串,可以是数组,也可以是内嵌的一个JSON对象,所以BSON也同样。

     

     

    > 查询文档 (find)

     格式:>  db.COLLECTION_NAME.find()

     find() 方法显示所有文档。

     

     注意_id" 这个字段是数据库默认给我们加的GUID,目的是保证数据的唯一性。

     

     另外find() 后面加上pretty() 方法以格式化的方式来显示所有文档。看起来会更舒服一点。

     

     

     当然find()操作不只是查所有文档,还可以像sql那样带各种条件去查询。

     MongoDB中条件操作符有以下:

     1)$gt (大于)、$lt(小于)、$gte(大于等于)、$lte(小于等于)

     实例如下:

     

    写法很简单,对照着实例很容易理解,这里就不做讲解了。

    2)$or(或者)、$in(包含在)、$nin(不包含在)

    实例如下:

    写法很简单,对照着实例很容易理解,这里就不做讲解了。

    > 高级查询

      1)查询数组

      对于数组,我们可以这样理解:数组中每一个元素都是这个键值对键的一个有效值

      例如:查询student集合里兴趣爱好为篮球的文档。

     

      我们可以看到只要爱好包含篮球的文档就可以查询出来。

     

      那么如果多个呢。例如:查询student集合里兴趣爱好为篮球和吉他的文档。

     

      我们可以看到虽然篮球和吉他在集合里存在,但是却查询不出来。

     

      如果我们要匹配多个数组,就需要条件操作符$all.

      例如:还是查询查询student集合里兴趣爱好为篮球和吉他的文档。

     

      我们可以看到数组里只要包含条件值,都能被查询出来,而且顺序可以不同。

     

      2)根据数组位置精确查找

      我们知道数组索引是从0开始,所以根据索引位置精确查找到数组某一位。

      例如:查询第一位为篮球的,第二位为吉他的。

     

     

      3)数组截取 $slice

      这里需要知道find函数里还有第二个参数,也就是用来控制需要显示哪些键值。1为显示,0为不显示。

      例如:显示nameage键值

     

     

      例如:显示nameage,不显示_id.

     

     

      继续说到$slice,数组截取,下面看下实例。

     

      可以看到值为1的时候,表示取数组里的前一位值,同理为2时,取数组前两位值。

      为-1的时候,表示取数组最后一位,同理为-2时,取数组后两位值。

      为[1,3]时,表示跳过第一位,取接下来的三位,如果不够三位,那么有几位就取几位。

     

      4)内嵌文档查询

     

      我们可以看到使用点表示法,深入到内嵌文档内部的键,来查询内嵌文档。

    > 更新文档 (update)

      格式:db.collection.update(<query>,<update>,{upsert:<boolean>,multi:<boolean>,writeConcern:<document>})

      参数说明:

      query :  update的查询条件,类似sql update查询内where后面的条件。

      update : update的对象和一些更新的操作符(如$set,$inc)等,也可以理解为sql update查询内set后面的值。

      upsert :  可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

      multi : 可选,mongodb      默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

      writeConcern :可选,抛出异常的级别。

     

      1)基本修改

     

     

      2$set (直接设置值)

      将jack的年龄修改为21岁。

     

     

      3$inc (在数字型的键值的原有值的基础上增加)

      将jack的年龄增加5岁。

     

     

      4upsert ( 如果不存在记录,true为插入新的文档,false为不插入,默认值为false)

     

      5) multi (默认为false,只更行符合条件的第一条记录,如果为true,则更新符合条件的全部记录

      为false的情况:

      

      为true的情况:

     

    > 删除 (remove)

      格式:db.collection.remove(<query>,{justOne:<boolean>,writeConcern:<document>})

      参数说明:

      justOne : (可选)如果设为 true 或 1,则只删除一个文档。

      query :(可选)删除的文档的条件

      writeConcern :(可选)抛出异常的级别。

     

      基本用法很简单,看下实例。

     

      注意:remove中如果不带参数将删除所有数据,不可撤回,所以要谨慎。

     

      基本的增删改查命令的使用就介绍到这里,下一篇学习一些常用的聚合函数。     

  • 相关阅读:
    【C#】ArcFace2 视频人脸比对教程
    C#二次封装虹软arc研究
    【Linux】Face Recognition的封装
    人脸识别 ArcFace Demo [Windows]
    Python创建一个简单的区块链
    Mac更新系统后提示xcrun error
    Hyperledger Fabric开发(二):创建网络
    Hyperledger Fabric开发(一):环境配置
    mac OS和win7笔记本实现文件共享
    代码行数统计的Java和Python实现
  • 原文地址:https://www.cnblogs.com/mejoy/p/5985522.html
Copyright © 2011-2022 走看看