MongoDB 数据类型

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

本文介绍了MongoDB中的数据类型,包括常见和不常见类型。还讨论了使用Mongosh操作数据类型的方法,并提供了示例。同时讨论了UUID类型的存储和检索问题,并给出了建议和注意事项。

🔎

延伸解读

ObjectId 的唯一性与顺序性

ObjectId 由时间戳、随机值和递增计数器组成,通常随时间增加,但并非严格单调。同一秒内生成的 ObjectId 顺序无法保证,且不同客户端的系统时钟可能不同,因此不能依赖 ObjectId 进行精确排序。

数值类型的选择:Int32、Int64、Decimal128 与 Double

MongoDB 根据数值范围自动选择 Int32 或 Int64,也可在 Mongosh 中显式指定。Decimal128 提供 34 位十进制精度,适合货币等精确计算;Double 精度较低,适用于对精度要求不高的场景。

UUID 存储:子类型 3 与 4 的差异

在 C# 中,Guid 默认存储为子类型 3(旧版 UUID),可能导致查询和显示问题。使用 GuidRepresentation.Standard 可确保存储为子类型 4,便于在 Compass 中识别和查询。注意子类型 3 的 Base64 编码与子类型 4 不同,混用可能引发数据不一致。

二进制数据与字符串的取舍

二进制数据(如 UUID)比字符串存储更高效,占用空间更小且查询更快。对于 UUID,建议使用二进制子类型 4 而非字符串,以提升性能并避免转换开销。

❓

Q&A

MongoDB支持哪些常见的数据类型?

MongoDB支持的常见数据类型包括ObjectId、Boolean、整数(Int32和Int64)、Decimal128、Double、String、Object、Array、Binary、Date、Timestamp和Null。

如何在MongoDB中使用Decimal128类型?

Decimal128用于处理货币数据,支持34位精度,适合需要精确小数的应用,如金融和科学计算。

ObjectId的结构是什么?

ObjectId由一个4字节的时间戳、一个5字节的随机值和一个3字节的递增计数器组成,具有唯一性和快速生成的特点。

MongoDB中的UUID类型有什么注意事项?

使用UUID时需注意旧版UUID和新版UUID的区别,建议使用GuidRepresentation.Standard以确保使用二进制子类型4。

MongoDB如何处理日期类型?

MongoDB的日期类型以自Unix纪元以来的毫秒数表示,范围约为29亿年,日期时间总是以UTC格式保存。

在MongoDB中,如何存储和检索二进制数据?

MongoDB允许存储原始二进制数据,如图像和音频文件,建议优先使用二进制数据,因为它比字符串更快且更小。

🏷️

标签

➡️

继续阅读