时间:2021-05-02
发现问题
最近将一个程序的存储迁移到了mongodb,发现了一个现象,guid类型写入后,在程序里面读取的和用客户端工具展示的不一样,一个简单的示例如下:
? 1 2 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格式存储,只需要设置一个全局配置即可:
? 1 bsondefaults.guidrepresentation = guidrepresentation.standard;这样就方便多了:
参考文章:
mongodb best practices for uuid data
总结
以上就是mongodb中关于guid的显示问题的详细内容,更多关于mongodb中guid显示问题的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/TianFang/p/12797351.html
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
问题描述: 使用mongoDB数据库,数据添加成功了,使用命令行能查询出来,但在MongoVUE中数据却不显示(我使用的是mongoDB3.4的版本) 原因
C#中GUID的生成以及格式1、GUID是在System命名空间下的结构(struct)体,下面展示实例。(1)创建一个GUID帮助类(GUIDHelper)u
1析构函数中是否可以抛出异常首先我们看一个常见的问题,析构函数中是否可以抛出异常。答案是C++标准指明析构函数不能、也不应该抛出异常!C++异常处理模型是为C+
很多应用要用到TreeView来显示组织机构,以下演示TreeView如何与数据库进行绑定。数据库结构如下(递归现实):id(guid)pid(guid)nam
工具软件diskgenius的主要功能如下: 1、支持传统的MBR分区表格式及较新的GUID分区表格式。 2、支持基本的分区建立、删除、隐藏等操作。可指定详