您现在的位置是:网站首页> 编程资料编程资料
Mongodb中关于GUID的显示问题详析_Mysql_
2023-05-27
488人已围观
简介 Mongodb中关于GUID的显示问题详析_Mysql_
发现问题
最近将一个程序的存储迁移到了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显示问题的资料请关注其它相关文章!
相关内容
- MySQL使用mysqldump+binlog完整恢复被删除的数据库原理解析_Mysql_
- mysql查询每小时数据和上小时数据的差值实现思路详解_Mysql_
- mysql条件查询and or使用方法及优先级实例分析_Mysql_
- MySQL 表数据的导入导出操作示例_Mysql_
- MySQL 8.0用户和角色管理原理与用法详解_Mysql_
- mysql数据备份与恢复实现方法分析_Mysql_
- mysql用户权限管理实例分析_Mysql_
- mysql用户管理操作实例分析_Mysql_
- mysql代码执行结构实例分析【顺序、分支、循环结构】_Mysql_
- 详解MySQL 表中非主键列溢出情况监控_Mysql_
