• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MongoDB 常用的数据类型和基本操作
    POST TIME:2021-10-18 23:12

    NO.1 MongoDB的常用数据类型

        MongoDB中的文档类似json,我们知道,在json中,最常用的数据类型有null、bool、数组、字符串、数据、json对象等等。相对比较少,比如对于时间类型的数据,json是无法表示的,而MongoDB中对json进行了简单的优化,像json,但是又不是json。下面我们慢慢说

         MongoDB的常用数据类型和MySQL比较像,你可以对比着看。它的常用数据类型有:

    1、null

    用于表示空值或者不存在的字段

    {"x":null}

    2、bool

    这个容易理解,true or false

    {"x":true}

    3、整数

    在MongoDB自带的shell中不可用,shell中的需要使用函数来表示整数,如下:

    {"x":NumberInt("3")}

    如果我们写成

    {"x":3}

    这里的3会被表示成double。

    4、字符串

    最常用的数据类型

    {"x":"string"}

    5、对象id

    对象id是12字节的唯一ID

    {"x":ObjectId()}

    在MongoDB的数据记录里面,也就是文档里面,必须有一个_id键,这个_id键你可以简单理解为唯一标识,类似MySQL中的自增主键,但是它一般不设置成自增的,因为在分布式环境中,同步自动增加主键值既费时又费力,MongoDB为了保证分布式场景下的性能,通过自身生成方式来产生_id,_id的类型,称之为ObjectId类型。

    该类型使用12字节的存储空间,每个字节里面是2位16进制的数字,是一个24位的字符串。这12个字节的生成方式如下:

    0、1、2、3位是时间戳,提供秒级别唯一性

    4、5、6位是机器的唯一标识符,提供机器级别唯一性

    7、8位是当前生成ObjectId的进程标识符,保证不同进程的唯一性

    9、10、11位是一个计数器,保证同一秒相同进程产生的ObjectId的唯一性。

    6、日期类型

    日期类型存储的是从标准纪元开始的毫秒数,不存储时区。

    {"x":new Data()}

    示例如下:

    > db.num.insert({"age": new Date()})
    WriteResult({ "nInserted" : 1 })
    > db.num.find()
    { "_id" : ObjectId("5f96b5e15e5c5ff982b9c6af"), "age" : 28 }
    { "_id" : ObjectId("5f9835d0f24f04e23fb63878"), "age" : 3 }
    { "_id" : ObjectId("5f983621f24f04e23fb63879"), "age" : 3 }
    { "_id" : ObjectId("5f9838d2f24f04e23fb6387a"), "age" : ISODate("2020-10-27T15:12:18.739Z") }

    7、数组

    值的集合或者列表可以表示成数组

    {"x":["a","b","c"]}

    8、内嵌文档

    文档可以包含别的文档

    {"x":{"foo":"bar"}}

    9、代码

    文档中可以包含JavaScript代码

    {"x":function(){/*-----*/}}

    NO.2 集合文档的基本操作

         这块儿可能是比较关键的部分了,在MySQL中,增删改查是最最基础的功能,在MongoDB中,这些技能也是必备的。

    集合相关操作

    1、查询集合

    查看当前数据库下面的集合,可以使用show collections命令。

    2、创建集合

    在MongoDB中,不需要单独创建集合,一般情况下,只要我们直接将文档插入到集合中,就可以看到集合自动生成了,举个例子:

    > show collections # 查看集合
    num
    person
    
    > db.aaa.insert({"name":"yeyz"})
    WriteResult({ "nInserted" : 1 })
    
    > show collections #查看集合,发现aaa这个集合生成了
    aaa
    num
    person

    3、删除集合

    > show collections
    aaa
    num
    person
    > 
    > db.aaa.drop() #删除集合
    true
    > show collections
    num
    person

    关于集合,最常见的操作就是上面几个。查询集合、创建集合、删除集合。

    再来看文档相关的操作:

    1、插入文档

    上面的例子中,我们使用insert操作已经演示了插入文档的方法。我把两种常见的方法写在一起:

    方法一:直接插入文档
    > db.aaa.insert({"name":"yeyz"})
    WriteResult({ "nInserted" : 1 })
    
    方法二:将文档保存在变量里面,插入变量
    > record={"name":"zhangsan"}
    { "name" : "zhangsan" }
    > db.aaa.insert(record)
    WriteResult({ "nInserted" : 1 })
    
    查找集合所有内容
    > db.aaa.find()
    { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
    { "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

    2、查询文档

    查询文档的方法比较多,展开来说可以说很久,就像我们的SQL语法一样,有各种各样的写法,这里先说下最简单的,查找所有对象、查找一条对象,或者查找某一条对象的方法。看例子:

    #查找所有记录
    > db.aaa.find()
    { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
    { "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }
    > 
    >
    #查找一条记录
    > db.aaa.findOne()
    { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
    
    #带过滤条件的,查找name=zhangsan的记录
    > db.aaa.find({"name":"zhangsan"})
    { "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }

    3、删除记录

    删除记录的方法也比较简单,如下:

    #查找所有记录
    > db.aaa.find()
    { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
    { "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }
    
    #删除name=zhangsan的记录
    > db.aaa.remove({"name":"zhangsan"})
    WriteResult({ "nRemoved" : 1 })
    > db.aaa.find()
    { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
    
    # 仅剩name=yeyz的一条记录
    > db.aaa.find()
    { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }

    如果不想要过滤条件,可以直接使用:

    db.aaa.remove()来删除所有的记录。

    4、更新记录

    更新记录,在MongoDB中有些麻烦,例如下面的场景

    #查找所有记录
    > db.aaa.find()
    { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
    { "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }
    
    #用一个变量表示要修改的文档
    > record={"name" : "yeyz","age":18}
    { "name" : "yeyz", "age" : 18 }
    
    #用刚才的变量替换匹配条件的结果
    > db.aaa.update({"name" : "yeyz"},record)
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    
    > db.aaa.find()
    { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 18 }
    { "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }
    
    # 修改变量的age属性
    > record.age=20
    20
    
    #再次替换原来的文档
    > db.aaa.update({"name" : "yeyz"},record)
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.aaa.find()
    { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 20 }
    { "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }

    上面的方法在条件唯一匹配的时候不会有问题,但是在条件不唯一匹配的场景下,可能存在一些隐患,下次我们再分享,今天就先这么点儿吧。

    每天的内容不多,慢慢来,一点一点搞懂它。。。晚安喽。

    以上就是MongoDB 常用的数据类型和基本操作的详细内容,更多关于MongoDB 数据类型和基本操作的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • 详解MongoDB中的日志模块
    • MongoDB聚合group的操作指南
    • java操作mongodb之多表联查的实现($lookup)
    • 2021最新版windows10系统MongoDB数据库安装及配置环境
    • MongoDB 简单入门教程(安装、基本概念、创建用户)
    • MongoDB 主分片(primary shard)相关总结
    • 详解MongoDB的角色管理
    • MongoDB 监控工具mongostat和mongotop的使用
    • MongoDB 副本集的搭建过程
    • MongoDB的chunk详解
    上一篇:MongoDB 简单入门教程(安装、基本概念、创建用户)
    下一篇:MongoDB 用户相关操作
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信