Mongodb中关于GUID的显示问题详析
发现问题
最近将一个程序的存储迁移到了Mongodb,发现了一个现象,Guid类型写入后,在程序里面读取的和用客户端工具展示的不一样,一个简单的示例如下:
var doc = new {_id = 1, Value = Guid.Parse("{B63932BB-9688-432B-B3A0-C4AE3FD2696A}") };
collection.InsertOne(doc.ToBsonDocument());
写入DB后,我们从客户端工具来查看它:

通过对比可以发现,展示的值和写入的形式不一样,但是读取到的值却是没有问题的。这个问题可以从官方的文档规范中找到答案:
官方文档: http://bsonspec.org/spec.html

Mongodb中是将uuid其作为二进制类型存储的,用一个subtype来标记其类型为uuid,在对C#,java,python提供的驱动中,默认是将其子类型映射了为3(Legacy UUID),这个在客户端工具中也是有所展示的:

实际上,大多数客户端工具也是能支持将Legacy UUID展示成我们写入时候的那个样子。
解决方法
虽然这个不影响程序的功能,但由于第一眼看到的字符串不是写入的格式,很多时候是影响我们调试程序的。一个较好的解决方法是默认将以标准的UUID格式存储,只需要设置一个全局配置即可:
BsonDefaults.GuidRepresentation = GuidRepresentation.Standard;
这样就方便多了:

参考文章:
MongoDB Best Practices for UUID Data
以上就是Mongodb中关于GUID的显示问题的详细内容,更多关于Mongodb中GUID显示问题的资料请关注免费资源网其它相关文章!
栏 目:其它数据库
本文地址:https://zz.feitang.co/shujuku/30100.html
您可能感兴趣的文章
- 12-31hiredis从安装到项目实战操作
- 12-31phpmyadmin登录时怎么指定服务器ip和端口
- 12-31MySQL线上死锁分析实战
- 12-31MySQL 触发器的使用和理解
- 12-31MySQL 字段默认值该如何设置
- 12-31Redis主从同步配置的方法步骤(图文)
- 12-31MySQL 字符串拆分操作(含分隔符的字符串截取)
- 12-31redis 交集、并集、差集的具体使用
- 12-31MySQL精讲之二:DML数据操作语句
- 12-31PostgreSQL判断字符串是否包含目标字符串的多种方法


阅读排行
推荐教程
- 12-23PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符
- 12-23使用imp和exp命令对Oracle数据库进行导入导出操作详解
- 12-11mysql代码执行结构实例分析【顺序、分支、循环结构】
- 12-08添加mysql的用户名和密码是什么语句?
- 12-05mysql的事务,隔离级别和锁用法实例分析
- 12-23详解Oracle游标的简易用法
- 12-20PhpMyAdmin出现错误数据无法导出怎么办?
- 12-19Redis中实现查找某个值的范围
- 12-15浅析mysql迁移到clickhouse的5种方法
- 12-15CentOS7 64位下MySQL5.7安装与配置教程




