加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

如何处理Mongodb中关于GUID的显示问题

发布时间:2022-07-06 19:08:35 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要讲解了如何解决Mongodb中关于GUID的显示问题,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。 发现问题 最近将一个程序的存储迁移到了Mongodb,发现了一个现象,Guid类型写入后,在程序里面读取的和用客户端工具
  这篇文章主要讲解了如何解决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;
  这样就方便多了

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!