Mongodb中关于GUID的显示问题详析

所属分类: 数据库 / Mysql 阅读数: 676
收藏 0 赞 0 分享

发现问题

最近将一个程序的存储迁移到了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查询和修改auto_increment的方法

这篇文章主要介绍了MySQL查询和修改auto_increment的方法,实例分析了select查询auto_increment及ALTER修改auto_increment的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql的左右内连接用法实例

这篇文章主要介绍了mysql的左右内连接用法,以一个完整实例较为详细的分析了mysql的左右内连接使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql 查询重复的数据的SQL优化方案

这篇文章主要介绍了mysql 查询重复的数据的SQL优化方案,非常不错的方案推荐给大家。
收藏 0 赞 0 分享

MySQL左联多表查询where条件写法示例

这篇文章主要介绍了MySQL左联多表查询where条件写法示例,本文直接给出写法示例,需要的朋友可以参考下
收藏 0 赞 0 分享

Mysql修改datadir导致无法启动问题解决方法

这篇文章主要介绍了Mysql修改datadir导致无法启动问题解决方法,本文原因是SELINUX导致,用关闭SELINUX的方法解决了这个问题,需要的朋友可以参考下
收藏 0 赞 0 分享

Centos中彻底删除Mysql(rpm、yum安装的情况)

这篇文章主要介绍了Centos中彻底删除Mysql(rpm、yum安装的情况),本文直接给出操作代码,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql误删root用户恢复方法

这篇文章主要介绍了mysql误删root用户恢复方法,本文操作是在mysql5.5版本下完成,其它版本仅作参考,需要的朋友可以参考下
收藏 0 赞 0 分享

MySQL编程中的6个实用技巧

这篇文章主要介绍了MySQL编程中的6个实用技巧,本文讲解了每一行命令都是用分号(;)作为结束、采用关联数组存取查询结果、TEXT、DATE、和SET数据类型等内容,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql生成随机字符串函数分享

这篇文章主要介绍了mysql生成随机字符串函数分享,本文直接给出实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Mysql大小写敏感的问题

这篇文章主要介绍了Mysql大小写敏感的问题的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多