MongoDB的文档其实和JSON很类似,与JavaScript的对象概念也很像。但是MongoDB的数据类型更加丰富。下面我们一一介绍MongoDB的数据类型。
数据类型 |
描述 |
举例 |
null |
表示空值或者未定义的对象 |
{“x”:null} |
布尔值 |
真或者假:true或者false |
{“x”:true} |
32位整数 |
32位整数。shell是不支持该类型的,shell中默认会转换成64位浮点数 |
|
64位整数 |
64位整数。shell是不支持该类型的,shell中默认会转换成64位浮点数 |
|
64位浮点数 |
64位浮点数。shell中的数字就是这一种类型 |
{“x”:3.14,“y”:3} |
字符串 |
UTF-8字符串 |
{“foo”:“bar”} |
符号 |
shell不支持,shell会将数据库中的符号类型的数据自动转换成字符串 |
|
对象id |
文档的12字节的唯一id |
{“id”: ObjectId()} |
日期 |
从标准纪元开始的毫秒数 |
{“date”:new Date()} |
正则表达式 |
文档中可以包含正则表达式,遵循JavaScript的语法 |
{“foo”:/foobar/i} |
代码 |
文档中可以包含JavaScript代码 |
{“x”:function() {}} |
二进制数据 |
任意字节的二进制串组成,shell不支持 |
|
最大值 |
表示可能的最大值,shell不支持 |
|
最小值 |
表示可能的最小值,shell不支持 |
|
未定义 |
undefined |
{“x”:undefined} |
数组 |
值的集合或者列表 |
{“arr”: [“a”,“b”]} |
内嵌文档 |
文档可以作为文档中某个key的value |
{“x”:{“foo”:“bar”}} |
上面的大部分类型都是显而易见的,但是有必要详细解释一下对象id类型。我们上面说了,对象id类型是一个12字节的唯一id。每个字节2位16进制数,因此整个id类型是一个24位的字符串。其结构如下表所示:
前面四个字节代表从标准纪元开始的时间戳,以秒为单位。
- 接下来三个字节表示机器号,MongoDB入门2——MongoDB数据类型一般是机器名的hash值。这可以保证不同机器产生的id不会冲突。
- 接下来两个字节表示进程id号,保证统一机器不同建成产生的id不冲突
- 最后三个是计数器的计数值,对于任意一秒钟,可以产生2^24个数
我们之前提到过,如果不在插入的时候手动的添加_id键,那么系统会自动添加一个。尽管MongoDB的id类型被设计成轻量级的,但是这样还是会不好。毕竟服务器创建这个还是会有开销的。因此,这个工作一般会放到客户端来做。
参考书籍
《MongoDB:The definitive guide》
分享到:
相关推荐
例如,你可以存储嵌套的文档、数组和复杂的数据类型。 MongoDB的主要操作包括创建(Create)、读取(Read)、更新(Update)和删除(Delete),简称CRUD。创建文档是通过`insertOne()`或`insertMany()`方法实现的,...
入门 MongoDB 可以通过官方提供的入门指南,这将引导你了解 MongoDB 的基础操作。遇到技术问题时,社区版用户可以借助 MongoDB 社区论坛寻求帮助,而企业版用户则可以通过专门的技术支持门户提交问题。此外,积极...
### MongoDB4.0从入门到实践 #### 一、初见MongoDB MongoDB是一款开源的NoSQL数据库系统,以其高性能、高可用性和易用性而受到广泛欢迎。本章节将带您初步了解MongoDB的基本概念和技术特点: 1. **MongoDB简介**...
1.2.2数据类型 1.2.3集合操作 1.2.3.1创建集合 1.2.3.2查看集合 1.2.3.3删除集合 1.2.4注意点 1.3增删改查 1.3.1插入数据 1.3.2查找数据 1.3.3更新数据 1.3.4删除数据 1.3.5符号 1.1基础入门 1.1.1应用场景 易扩展性...
- **分片**:讲解MongoDB的水平扩展技术——分片集群的工作原理及配置步骤。 - **复制集**:探讨复制集在实现高可用性方面的作用,以及如何配置复制集。 - **性能优化** - **索引管理**:如何合理创建和维护索引...
18. **MongoDB入门指南**(Introduction to MongoDB):这部分可能会提供一个简短的入门教程,帮助读者快速了解MongoDB的基本操作,包括安装、配置、基本查询等。 19. **MongoDB性能优化**(Optimizing MongoDB ...
Morphia 是一个针对Google的开源数据存储框架——MongoDB的Java对象数据映射库。它提供了简单、直观的方式来将Java对象持久化到MongoDB数据库中,使得开发人员可以像操作传统Java对象一样操作数据库文档,而无需关心...
最初的基础章节,涵盖了Python语言的基本语法,如变量、数据类型、控制结构、函数定义、模块导入等,为后续的项目实践打下坚实的基础。 这些案例覆盖了Python编程的多个领域,包括网络爬虫、深度学习、游戏开发、...
这包括定义数据表的结构,如字段、数据类型的选择,以及主键和外键的概念。此外,还会讨论如何使用SQL语句来创建和修改数据库对象,例如CREATE DATABASE和ALTER TABLE命令。 "数据库的相关概念"章节会涵盖数据库...
5. **元组、字符串、字典**:介绍不可变的元组(tuple)和复杂的数据结构——字典(dictionary),它们在数据组织和存储方面的作用。 6. **函数基础**:学习如何定义和调用函数,理解参数传递,以及如何使用函数来...
书中可能会涵盖JavaScript的基础知识,因为它是Node.js的编程语言,包括变量、数据类型、控制流以及函数等。此外,它还会讲解Node.js的事件驱动模型,这是Node.js异步非阻塞I/O实现的关键,对于理解Node.js的性能...
在Java的世界里,你需要掌握基础语法、数据类型、方法、面向对象编程概念以及异常处理。理解Java的基本功,如内存管理、类和对象、封装、继承和多态,是构建强大代码能力的基石。 接着,你需要熟悉Java集合框架,...
本教程旨在为不同水平的编程学习者提供一个全面的Python入门指南。它涵盖了Python的核心概念、语法结构以及常用特性。Python,作为一种动态类型的、面向对象的解释型高级编程语言,以其简洁明了的语法和强大的功能而...
Go语言,也称为Golang,是由Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言,特别适合构建高性能的Web服务。下面将详细讨论GoWeb编程中的关键知识点。 1. **Go语言基础**: - 语法特性:...
JSON支持以下几种数据类型: 1. **数值**:整数和浮点数。 2. **字符串**:必须用双引号包围。 3. **布尔值**:`true` 和 `false`。 4. **数组**:由方括号包围的值的有序集合。 5. **对象**:由花括号包围的键值对...
阿里巴巴的商品信息存储经历了从单一到多元的过程,包括内部改造MySQL、去IOE化(去除IBM小型机、Oracle数据库和EMC存储设备),以适应大数据、高并发和多样化数据类型的需求。 总结,Redis作为NoSQL数据库的一种,...