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

 更新时间:2020年05月06日 10:19:05   作者:天方  
这篇文章主要给大家介绍了关于Mongodb中GUID的显示问题,文中通过示例代码介绍的非常详细,对大家学习或者使用Mongodb具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

发现问题

最近将一个程序的存储迁移到了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闪退和服务无法启动的解决方法

    MySql闪退和服务无法启动的解决方法

    今天小编就为大家分享一篇关于MySql闪退和服务无法启动的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • MySQL表的创建及字段介绍(小白入门篇)

    MySQL表的创建及字段介绍(小白入门篇)

    这篇文章主要为大家介绍了MySQL表的创建及字段介绍(小白入门篇),有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • MySQL数据库的主从同步配置与读写分离

    MySQL数据库的主从同步配置与读写分离

    这篇文章主要介绍了MySQL数据库的主从同步配置与读写分离,需要的朋友可以参考下
    2018-01-01
  • MYSQL聚合查询、分组查询、联合查询举例详解

    MYSQL聚合查询、分组查询、联合查询举例详解

    我们做的很多查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值,这篇文章主要介绍了MYSQL聚合查询、分组查询、联合查询的相关资料,需要的朋友可以参考下
    2024-09-09
  • 将mysql脚本转化为oracle脚本的攻略与细节点

    将mysql脚本转化为oracle脚本的攻略与细节点

    前段时间公司项目数据库需要从mysql转为oracle,所以需要修改下原有的mysql脚本,这篇文章主要给大家介绍了关于将mysql脚本转化为oracle脚本的攻略与细节点,需要的朋友可以参考下
    2023-09-09
  • 从零开始MySQL触发器实战攻略

    从零开始MySQL触发器实战攻略

    想要掌握MySQL触发器的实战技巧吗?从零开始,跟我一起揭开触发器神秘的面纱!轻松入门,迅速提升,这个指南将让你的MySQL技能焕然一新!一探究竟,惊喜等你发现!
    2024-02-02
  • MySQL内存使用率高且不释放问题排查与总结

    MySQL内存使用率高且不释放问题排查与总结

    这篇文章主要给大家介绍了MySQL内存使用率高且不释放问题排查与总结,文中通过代码示例和图文结合的方式给大家讲解的非常详细,对大家解决问题有一定的帮助,需要的朋友可以参考下
    2024-09-09
  • IDEA连接MySQL数据库并执行SQL语句使用数据图文详解

    IDEA连接MySQL数据库并执行SQL语句使用数据图文详解

    使用idea连接本地MySQL数据库,就可以很方便的看到数据库的内容,还可以进行基本的增加,删除,修改操作,下面这篇文章主要给大家介绍了关于IDEA连接MySQL数据库并执行SQL语句使用数据的相关资料,需要的朋友可以参考下
    2023-03-03
  • MySQL多实例配置方案

    MySQL多实例配置方案

    MySQL多实例就是,在一台机器上开启多个不同的服务端口(如:3306,3307,3308...),运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的端口提供服务。
    2018-04-04
  • MySQL每日一练项目之校园教务系统

    MySQL每日一练项目之校园教务系统

    这篇文章主要给大家介绍了关于MySQL每日一练项目之校园教务系统的相关资料,教务管理系统是一套高校专用管理系统,主要用于解决信息化办公流程、学生管理、课程管理、教职工管理等相关问题,需要的朋友可以参考下
    2023-09-09

最新评论