‘- String
- Integer
- Double
- Boolean
- Object
- ObjectId
- Arrays
- Min/Max Keys
- Datetime
- Code
- Regular Expression
- … 等等
? 为什么要在 MongoDB 中用”Code”数据类型?
“Code” 类型,用于在文档中存储 JavaScript 代码。决绝绝大多数业务场景下,我们并不会使用这个数据类型。
? 为什么要在 MongoDB 中用”Regular Expression”数据类型?
“Regular Expression” 类型,用于在文档中存储正则表达式。
? 为什么在 MongoDB 中使用”ObjectId”数据类型?
“ObjectId” 数据类型,用于存储文档 id 。关于 ObjectId 的组成,可以看看 《MongoDB 深究之 ObjectId》 。
- 另外,ObjectId 天然就是分布式主键的实现,所以在 MongoDB 分片后,依然可以继续使用。
当然,对于绝大数业务场景下,我们还是希望能够使用自增 ID ,可以参看 《Java 中实现 MongoDB 自增主键 ID》 。
- 另外,使用 SnowFlake 等等,也是一种方式。
? 如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?
GridFS 是一种将大型文件存储在 MongoDB 中的文件规范。使用 GridFS 可以将大文件分隔成多个小文档存放,这样我们能够有效的保存大文档,而且解决了 BSON 对象有限制的问题。
当然,实际生产环境下,建议使用专门的文件服务器,例如 FastDFS、TFS 等,而不是使用 MongoDB GridFS 。
? MongoDB 支持存储过程吗?如果支持的话,怎么用?
MongoDB 支持存储过程,它是 Javascript 写的,保存 db.system.js
表中。
当然,和 MySQL 一样,实际场景下,不会使用存储过程。
建议后续持续追踪此话题,形成系列研究。