• 售前

  • 售后

热门帖子
入门百科

MongoDB 常用的数据范例和根本操纵

[复制链接]
慧眼识英雄1 显示全部楼层 发表于 2021-8-14 14:54:37 |阅读模式 打印 上一主题 下一主题
目录


  • NO.1 MongoDB的常用数据范例

    • 1、null
    • 2、bool
    • 3、整数
    • 4、字符串
    • 5、对象id
    • 6、日期范例
    • 7、数组
    • 8、内嵌文档
    • 9、代码

  • NO.2 聚集文档的根本操作

    • 聚集干系操作

      • 1、查询聚集
      • 2、创建聚集
      • 3、删除聚集

    • 再来看文档干系的操作:

      • 1、插入文档
      • 2、查询文档
      • 3、删除记载
      • 4、更新记载



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()}
示比方下:
  1. > db.num.insert({"age": new Date()})
  2. WriteResult({ "nInserted" : 1 })
  3. > db.num.find()
  4. { "_id" : ObjectId("5f96b5e15e5c5ff982b9c6af"), "age" : 28 }
  5. { "_id" : ObjectId("5f9835d0f24f04e23fb63878"), "age" : 3 }
  6. { "_id" : ObjectId("5f983621f24f04e23fb63879"), "age" : 3 }
  7. { "_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中,不需要单独创建聚集,一样平常情况下,只要我们直接将文档插入到集会集,就可以看到聚集主动天生了,举个例子:
  1. > show collections # 查看集合
  2. num
  3. person
  4. > db.aaa.insert({"name":"yeyz"})
  5. WriteResult({ "nInserted" : 1 })
  6. > show collections #查看集合,发现aaa这个集合生成了
  7. aaa
  8. num
  9. person
复制代码
3、删除聚集
  1. > show collections
  2. aaa
  3. num
  4. person
  5. >
  6. > db.aaa.drop() #删除集合
  7. true
  8. > show collections
  9. num
  10. person
复制代码
关于聚集,最常见的操作就是上面几个。查询聚集、创建聚集、删除聚集。

再来看文档干系的操作:


1、插入文档

上面的例子中,我们利用insert操作已经演示了插入文档的方法。我把两种常见的方法写在一起:
  1. 方法一:直接插入文档
  2. > db.aaa.insert({"name":"yeyz"})
  3. WriteResult({ "nInserted" : 1 })
  4. 方法二:将文档保存在变量里面,插入变量
  5. > record={"name":"zhangsan"}
  6. { "name" : "zhangsan" }
  7. > db.aaa.insert(record)
  8. WriteResult({ "nInserted" : 1 })
  9. 查找集合所有内容
  10. > db.aaa.find()
  11. { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
  12. { "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }
复制代码
2、查询文档

查询文档的方法比力多,睁开来说可以说很久,就像我们的SQL语法一样,有各种各样的写法,这里先说下最简朴的,查找全部对象、查找一条对象,大概查找某一条对象的方法。看例子:
  1. #查找所有记录
  2. > db.aaa.find()
  3. { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
  4. { "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }
  5. >
  6. >
  7. #查找一条记录
  8. > db.aaa.findOne()
  9. { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
  10. #带过滤条件的,查找name=zhangsan的记录
  11. > db.aaa.find({"name":"zhangsan"})
  12. { "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }
复制代码
3、删除记载

删除记载的方法也比力简朴,如下:
  1. #查找所有记录
  2. > db.aaa.find()
  3. { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
  4. { "_id" : ObjectId("5f983ba1f24f04e23fb6387d"), "name" : "zhangsan" }
  5. #删除name=zhangsan的记录
  6. > db.aaa.remove({"name":"zhangsan"})
  7. WriteResult({ "nRemoved" : 1 })
  8. > db.aaa.find()
  9. { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
  10. # 仅剩name=yeyz的一条记录
  11. > db.aaa.find()
  12. { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
复制代码
如果不想要过滤条件,可以直接利用:
db.aaa.remove()来删除全部的记载。

4、更新记载

更新记载,在MongoDB中有些贫苦,比方下面的场景
  1. #查找所有记录
  2. > db.aaa.find()
  3. { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz" }
  4. { "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }
  5. #用一个变量表示要修改的文档
  6. > record={"name" : "yeyz","age":18}
  7. { "name" : "yeyz", "age" : 18 }
  8. #用刚才的变量替换匹配条件的结果
  9. > db.aaa.update({"name" : "yeyz"},record)
  10. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  11. > db.aaa.find()
  12. { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 18 }
  13. { "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }
  14. # 修改变量的age属性
  15. > record.age=20
  16. 20
  17. #再次替换原来的文档
  18. > db.aaa.update({"name" : "yeyz"},record)
  19. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  20. > db.aaa.find()
  21. { "_id" : ObjectId("5f983b81f24f04e23fb6387c"), "name" : "yeyz", "age" : 20 }
  22. { "_id" : ObjectId("5f983d76f24f04e23fb6387e"), "name" : "zhangsan" }
复制代码
上面的方法在条件唯一匹配的时间不会有题目,但是在条件不唯一匹配的场景下,大概存在一些隐患,下次我们再分享,今天就先这么点儿吧。
每天的内容不多,慢慢来,一点一点搞懂它。。。晚安喽。
以上就是MongoDB 常用的数据范例和根本操作的具体内容,更多关于MongoDB 数据范例和根本操作的资料请关注草根技术分享其它干系文章!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作