Chapter 2: Importing, Exporting, and Querying Data

How does MongoDB store data?

什么是json:

JavaScript Object Notation,通常称为 JSON,在 2000 年代初期由 JavaScript 创建者 Douglas Crockford 定义为 JavaScript 语言的一部分,尽管直到 2013 年才正式指定格式

JavaScript 对象是简单的关联容器,其中一个字符串键映射到一个值(可以是数字、字符串、函数,甚至是另一个对象)。 这种简单的语言特性允许 JavaScript 对象在文本中非常简单地表示:

{
  "_id": 1,
  "name" : { "first" : "John", "last" : "Backus" },
  "contribs" : [ "Fortran", "ALGOL", "Backus-Naur Form", "FP" ],
  "awards" : [
    {
      "award" : "W.W. McDowell Award",
      "year" : 1967,
      "by" : "IEEE Computer Society"
    }, {
      "award" : "Draper Prize",
      "year" : 1993,
      "by" : "National Academy of Engineering"
    }
  ]
}

随着 JavaScript 成为客户端 Web 开发的默认语言,JSON 开始有了自己的生命。 由于人类和机器可读,并且相对简单地实现对其他语言的支持,JSON 迅速超越了网页,进入了无处不在的软件。

MongoDB JSON 连接

MongoDB 从一开始就被设计为现代应用程序开发的终极数据平台。 JSON 的普遍性使其成为在 MongoDB 创新的文档数据模型中表示数据结构的明显选择。

但是,有几个问题使 JSON 不太适合在数据库内部使用。

  • JSON是基于文本的格式,文本解析很慢
  • JSON 的可读格式远非节省空间,另一个数据库问题
  • JSON 仅支持有限数量的基本数据类型

为了使 MongoDB 以 JSON 为先,但仍然具有高性能和通用性,发明了 BSON 来弥补差距:一种二进制表示,以 JSON 格式存储数据,针对速度、空间和灵活性进行了优化。 就方法而言,它与协议缓冲区或 Thrift 等其他交换格式没有什么不同。

json的优缺点:

什么是 BSON? 

BSON 仅代表“二进制 JSON”,而这正是它被发明的目的。 BSON 的二进制结构对类型和长度信息进行编码,从而可以更快地对其进行解析。

自从最初制定以来,BSON 已经被扩展以添加一些可选的非 JSON 原生数据类型,如日期和二进制数据,如果没有这些,MongoDB 将失去一些有价值的支持。

支持任何类型的复杂数学的语言通常具有不同大小的整数(ints 与 longs)或各种级别的小数精度(float、double、decimal128 等)。

能够表示存储在 MongoDB 中的数据中的这些区别不仅很有帮助,它还允许以简化使用应用程序代码的方式直接对数据进行比较和计算。

MongoDB 使用 BSON 还是 JSON? 

MongoDB 在内部和通过网络以 BSON 格式存储数据,但这并不意味着您不能将 MongoDB 视为 JSON 数据库。 您可以在 JSON 中表示的任何内容都可以本地存储在 MongoDB 中,并且可以在 JSON 中轻松检索。

JSON vs BSON

JSON 和 BSON 在设计上确实是近亲。 BSON 被设计为 JSON 数据的二进制表示,具有针对更广泛应用的特定扩展,并针对数据存储和检索进行了优化。

BSON 与 JSON 不同的一个特殊方式是它支持一些更高级的数据类型。 例如,JavaScript 不区分整数(整数)和浮点数(具有不同程度的小数精度)。

大多数服务器端编程语言都有更复杂的数字类型(标准包括整数、正则精度浮点数又名“float”、双精度浮点数又名“double”和布尔值),每种都有自己的最佳用法以实现高效的数学运算 操作。

Importing and Exporting Data 

之前的课程我们已经直到,MongoDB存储通过BSON, 查看通过JSON。

 

又到了做题环节,以下哪个命令会将存储在 animals.json 中的集合添加到 Atlas 集群?

实验环节:

接下来安装好mongo db shell,并配置好环境变量, 通过cmd在本地操作mongodb。首先下载好安装包到本地解压缩。

然后配置好环境变量:

 打开cmd,通过 mongosh "mongodb+srv://cluster0.4k7kb.mongodb.net/myFirstDatabase" --username m001-student  可以看到已经连接上了。

 输入 show dbs 可以看到所有的数据库

 接下来我们使用 use sample_training 数据库, 显示所有的collection,之前解释过,collection就是 相同fields的documents的集合。  show collections  

通过 db.zips.find({"state":"NY"}) 可以查到包含这条fileds的所有document 

通过在zips collections下统计 state为NY, 和 city为ALBANY的documents的总数。 

db.zips.find({"state": '"NY", "city":"ALBANY"}).count()

db.zips.find({"state":"NY", "city":"ALBANY"}).pretty() 为了更有结构的显示document可以在后面加pretty()函数

来做一道题:

ok, chapter2 也已经完成啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值