Mongodb中关于GUID的显示问题详析
程序员文章站
2022-04-06 09:08:29
发现问题最近将一个程序的存储迁移到了mongodb,发现了一个现象,guid类型写入后,在程序里面读取的和用客户端工具展示的不一样,一个简单的示例如下: var doc = new {_id = 1,...
发现问题
最近将一个程序的存储迁移到了mongodb,发现了一个现象,guid类型写入后,在程序里面读取的和用客户端工具展示的不一样,一个简单的示例如下:
var doc = new {_id = 1, value = guid.parse("{b63932bb-9688-432b-b3a0-c4ae3fd2696a}") }; collection.insertone(doc.tobsondocument());
写入db后,我们从客户端工具来查看它:
通过对比可以发现,展示的值和写入的形式不一样,但是读取到的值却是没有问题的。这个问题可以从官方的文档规范中找到答案:
官方文档:
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显示问题的资料请关注其它相关文章!
推荐阅读
-
关于VS2005中C#代码用F12转到定义时,总是显示从元数据的问题
-
MongoDB中的参数限制与阀值详析
-
Mongodb中关于GUID的显示问题详析
-
React中阻止事件冒泡的问题详析
-
关于MongoDB谨防索引seek的效率问题详析
-
关于Mysql update修改多个字段and的语法问题详析
-
discuz中关于去掉外部链接功能后flash视频显示的有关问题
-
关于Iframe实现局部刷新问题:当提交注册表单后,我想把注册成功的信息显示在页面中,现在结果时不能显示在本页面,而是显示在了那个iframe中了,怎么办
-
关于VS2005中C#代码用F12转到定义时,总是显示从元数据的问题
-
discuz中关于去掉外部链接功能后flash视频显示的有关问题