Mongodb中关于GUID的显示问题详析
2020-05-07 04:05
120 查看
发现问题
最近将一个程序的存储迁移到了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显示问题的资料请关注脚本之家其它相关文章!
相关文章推荐
- 关于MongoDB谨防索引seek的效率问题详析
- 关于网址前面小图标显示问题(解决360浏览器不显示)
- 关于jar生成exe时出现背景图片无法显示的问题
- 关于XShell远程登录显示乱码问题的解决方案
- 关于sublime Text3 显示gkb乱码的问题
- 关于oracle number类型超过16位的显示问题
- 关于Eclipse中代码显示显色的设置问题
- (原创)关于viewpager嵌套listview居中显示的问题
- 关于时间显示为今天、昨天、星期一之类的格式问题
- 关于数据库使用numeric(18,2) ,java后台使用double会出现金额显示问题解决方案。
- 关于在CAknMessageQueryDialog里显示中文的问题
- 关于ORACLE数据库中汉字显示乱码问题的探讨
- 关于ItemizedOverlay不能显示地标图片的问题
- 关于easyUI在子页面增加显示tabs的一个问题
- 关于QT的QSystemTrayIcon的上下文菜单失去焦点仍然显示的问题
- 关于RCP中使用系统resource navigator图标和项目名称不显示的问题
- 关于JKAlertDialog在多个视图控制器跳转后不能正常显示的问题的解决--IOS
- 【《Unity着色器和屏幕特效开发秘笈》】学习整理:关于模型顶点色的显示问题
- 关于高德地图不显示的问题
- 关于button中设置文字不显示的问题