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联合查询UNION和Order by同时使用报错问题的解决办法

    Mysql联合查询UNION和Order by同时使用报错问题的解决办法

    很多朋友刚使用联合查询UNION的时候常常会理所当然的将联合查询理解为把没一个子查询的结果集组合成一个大的结果集
    2014-04-04
  • MySQL 数据查重、去重的实现语句

    MySQL 数据查重、去重的实现语句

    这篇文章主要介绍了MySQL 数据查重、去重的实现语句,帮助大家更好的理解和学习MySQL数据库,感兴趣的朋友可以了解下
    2020-09-09
  • 使用MySQL的geometry类型处理经纬度距离问题的方法

    使用MySQL的geometry类型处理经纬度距离问题的方法

    这篇文章主要介绍了使用MySQL的geometry类型处理经纬度距离问题的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • MySQL表结构变更你不可不知的Metadata Lock详解

    MySQL表结构变更你不可不知的Metadata Lock详解

    这篇文章主要给大家介绍了关于MySQL表结构变更你不可不知的Metadata Lock的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • 详解sql中的参照完整性(一对一,一对多,多对多)

    详解sql中的参照完整性(一对一,一对多,多对多)

    这篇文章主要介绍了sql中的参照完整性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Ubuntu安装Mysql+启用远程连接的完整过程

    Ubuntu安装Mysql+启用远程连接的完整过程

    这篇文章主要介绍了Ubuntu如何安装Mysql+启用远程连接,用ssh客户端或者云服务器厂家提供的网页版控制台都行,只要你能连上服务器就行,需要的朋友可以参考下
    2022-06-06
  • MySQL 8.0 可以操作 JSON 了

    MySQL 8.0 可以操作 JSON 了

    这篇文章主要介绍MySQL 8.0 如何操作 JSON ,经过漫长的测试,即将整体迁移至Mysql8.0; Mysql8.0 对于Json操作新增/优化了很多相关Json的API操作; 阅读了一下官方文档,虽然绝大多数的JSON操作都是应用层完成,下面来看文章的详细内容吧
    2021-10-10
  • Docker Dockerfile构建MySQL并初始化数据方式

    Docker Dockerfile构建MySQL并初始化数据方式

    这篇文章主要介绍了Docker Dockerfile构建MySQL并初始化数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • MySQL如何创建视图

    MySQL如何创建视图

    这篇文章主要介绍了MySQL如何创建视图,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08
  • Mysql的Explain使用方式及索引总结

    Mysql的Explain使用方式及索引总结

    这篇文章主要介绍了Mysql的Explain使用方式及索引总结,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论