资讯专栏INFORMATION COLUMN

(翻译) MongoDB(6) MongoDB 继承 JSON

BWrong / 2190人阅读

摘要:严格模式模式是一个位有符号整数。你必须包含括号,否则将会被解释为浮点数,导致准确性的损失。例如,下列命令是把带括号和不带括号的整数值作为一个来插入当你检索文档的时候,未加引号的值已经发生了改变,加引号保证了其的准确性下一章原文来源

JSON 所支持的类型仅是 BSON 所支持的一部分(子集). 不仅保留了类型信息, MongoDB 还为 JSON 格式增加了以下扩展:

严格模式. BSON 类型的严格模式符合JSON RFC. 任何 JSON 解析器都可以将这些严格模式的表示解析为键/值对; 然而, 仅有 MongoDB 内部 JSON 解析器可以识别由格式所传达的类型信息.

mongo Shell 模式. MongoDB 内部 JSON 解析器和 mongo shell 都可以解析这个模式.

表现用于各种数据类型决定JSON 解析的上下文.

解析器和支持的格式 严格模式输入

下面可以解析在严格模式下类型信息的识别.

REST 接口

mongoimport

各种 MongoDB 工具的 --query

其他JSON解析器,包含 mongo shell 和 db.eval(), 可以识别严格模式表示为键/值对, 但是没有识别类型信息.

mongo Shell模式输入

下面可以解析在 mongo shell 模式下识别类型信息.

REST 接口

mongoimport

各种 MongoDB 工具的 --query

mongo shell

严格模式输出

mongoexport and REST 和 HTTP 接口 在严格模式下输出数据.

mongo Shell模式输出

bsondump 在 mongo Shell 模式输出.

BSON 数据类型和有关表现

下面介绍 BSON 数据类型和在严格模式和 mongo Shell 模式下有关表现.

二进制

data_binary

Strict Mode mongo Shell Mode
{ "$binary": "", "$type": "" } BinData ( , )

是一个二进制字符串的base64的表现形式.

是单个字节表明数据类型的表现形式. 在严格模式下, 它是一个十六进制字符串, 并且在 Shell 模式它是一个整数. 查阅BSON扩展文档. http://bsonspec.org/spec.html

Date

data_date

严格模式 mongo Shell 模式
{ "$date": "" } new Date ( )

在严格模式下, 是一种ISO 8601的日期格式, 带着必需的遵循以下格式的(YYYY-MM-DDTHH:mm:ss.mmm<+/-Offset>) 的时区字段.

MongoDB JSON 解析器当前不支持加载 ISO-8601 字符串, 表示Unix纪元之前的日期. 当格式化纪元之前的日期和过去的日期, 你的系统的 time_t 类型可以存在, 使用以下格式:

{ "$date" : { "$numberLong" : "" } }

在 Shell 模式下, 是JSON表示的一个64位有符号整数,赋予了自纪元UTC之后毫秒数.

Timestamp

data_timestamp

严格模式 mongo Shell 模式
{ "$timestamp": { "t": , "i": } } Timestamp( , )

是一个JSON表现的自纪元到现在的32位无符号的总秒数.

是一个一直增长的32位无符号整数.

正则表达式

data_regex

严格模式 mongo Shell 模式
{ "$regex": "", "$options": "" } //

是一个有效的JSON字符串.

是一个字符串, 包含有效的JSON字符和非转义的双引号(")字符, 但是可能不包含非转义反斜杠(/)字符.

是一个字符串包含使用字母表中的字母来表示正则表达式选项.

是一个可能只包含‘g’, ‘i’, ‘m’ and ‘s’等的字符串( 版本1.9新增).

是一个可能只包含‘g’, ‘i’, ‘m’ and ‘s’等的字符串( 版本1.9新增). 因为 JavaScriptmongo Shell 支持一个范围限制选项, 当转换为这种表示方法的时候,任何不合格的选项都将会被丢弃.

OID

data_oid

严格模式 mongo Shell 模式
{ "$oid": "" } ObjectId( "" )

是一个24个字符的16进制字符串.

DB Reference

data_ref

严格模式 mongo Shell 模式
{ "$ref": "", "$id": "" } DBRef("", "")

是一个有效的JSON字符串.

是任何有效的扩展JSON类型.

Undefined 类型

data_undefined

严格模式 mongo Shell 模式
{ "$undefined": true } undefined

JavaScript/BSON undefined 类型的表现.

你不能在文档查询中使用undefined. 想象下面的文档插入到people集合中:

db.people.insert( { name : "Sally", age : undefined } )

下面的查询返回一个错误:

db.people.find( { age : undefined } )
db.people.find( { age : { $gte : undefined } } )

然而,你可以使用$type来查询未定义的值,比如:

db.people.find( { age : { $type : 6 } } )

这个查询返回所有age字段的值为undefined的文档.

MinKey

data_minkey

严格模式 mongo Shell 模式
{ "$minKey": 1 } MinKey

BSON数据类型 MinKey 的表现是相比之下,小于其它所有类型. 在BSON类型比较排序上查阅比较/排序 顺序的更多信息..

MaxKey

data_maxkey

严格模式 mongo Shell 模式
{ "$maxKey": 1 } MaxKey

BSON数据类型 MaxKey 的表现是相比之下,大于其它所有类型. 在BSON类型比较排序上查阅比较/排序 顺序的更多信息.

NumberLong

版本2.6新功能

data_numberlong

严格模式 mongo Shell 模式
{ "$numberLong": "" } NumberLong( "" )

NumberLong是一个64位有符号整数。你必须包含括号,否则将会被解释为浮点数,导致准确性的损失。

例如,下列命令是把带括号和不带括号的整数值9223372036854775807作为一个NumberLong来插入:

db.json.insert( { longQuoted : NumberLong("9223372036854775807") } )
db.json.insert( { longUnQuoted : NumberLong(9223372036854775807) } )

当你检索文档的时候,未加引号的值已经发生了改变,加引号保证了其的准确性:

db.json.find()
{ "_id" : ObjectId("54ee1f2d33335326d70987df"), "longQuoted" : NumberLong("9223372036854775807") }
{ "_id" : ObjectId("54ee1f7433335326d70987e0"), "longUnquoted" : NumberLong("-9223372036854775808") }

下一章:https://segmentfault.com/a/11...
原文来源:https://docs.mongodb.com/manu...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18904.html

相关文章

  • (翻译) MongoDB(4) 文档

    摘要:使用文档来存储数据纪录。是文档的二进制表示。文档的局限性文件有以下属性文档大小限制文档的最大值为。存储的文档的大小超过了最大值,提供。在版本之前,不会尽量维持原文档中的字段顺序。更新文档更新文档使用更新操作中指定字段去执行指定数据的修改。 MongoDB使用BSON文档来存储数据纪录。BSON是JSON文档的二进制表示。尽管它比JSON包含更多的数据类型。对于BSON规范,查看bson...

    TNFE 评论0 收藏0
  • (翻译) MongoDB(5) BSON类型

    摘要:类型数字别名注意已过时布尔日期正则表达式位整数时间戳位整数要确定字段的类型,请查看在中检验类型。是位整数,代表自纪元年月日以来的毫秒数。 BSON是一个用来存储文档的二进制序列化格式,并且可以在MongoDB中远程调用。该BSON规范位于bsonspce.org。 BSON在文档中支持下列数据类型作为值。每个数据类型都有相对应的数字和字符串别名用 $type 操作执行BSON类型来查询...

    KnewOne 评论0 收藏0
  • (翻译) MongoDB(19) mongo Shell

    摘要:概述是的交互式接口你可以使用查询和更新数据以及执行管理操作是发行版的一个组件一旦你已经安装并且启动了连接到你运行的实例在手册的大部分示例都是使用然而许多驱动程序为提供了类似的接口启动重要在尝试运行之前确保正在运行启动并使用默认端口连接到本地 概述 mongo shell 是 MongoDB的交互式 JavaScript 接口. 你可以使用 mongo shell 查询和更新数据以及执行...

    张率功 评论0 收藏0
  • (翻译) MongoDB(1) 简介

    摘要:文档数据库在中,一条纪录就是一个文档,它是由字段和值对组成的数据结构。尤其是在数据库系统中,对于嵌入式数据模型的支持减少了活动。它提供自动故障转移数据冗余副本集是一组服务器,保持相同的数据集,提供冗余和提高数据可用性的。 MongoDB 是一个提供了高性能、高可用、自动扩展的开源的文档数据库。 文档数据库 在MongoDB中,一条纪录就是一个文档,它是由字段和值对组成的数据结构。Mon...

    Magicer 评论0 收藏0
  • Day 25: 联合Tornado、MongoDB 和 AngularJS 进行应用开发

    摘要:在被收购之后,维护并继续发展。设置是告诉应用在目录寻找应用模板。设置告诉应用使用目录里面的类似图像文件等静态文件。我们会在应用开发过程中,保持着调试器在后台运行。这能提供高效的开发环境。我们会把回应状态设为已创建。 编者注:我们发现了有趣的系列文章《30天学习30种新技术》,正在翻译,一天一篇更新,年终礼包。下面是第23天的内容。 今天的《30天学习30种新技术》,我决定暂时放下...

    hsluoyz 评论0 收藏0

发表评论

0条评论

BWrong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<