最近將一個程序的存儲遷移到了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; |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信