2011-06-17 44 views
3

我想使用mongoVue工具插入Guid,我該怎麼做?MongoVue和Guid

爲了解釋上下文,我用來複制我的集合的json(感謝文本視圖選項卡),並將其粘貼到我的txt文件中,而不是使用mongodump。但是,當我創建一個新的集合並將其粘貼到前一個副本的json中時,我的guid二進制類型現在顯示爲「」對象ID「」,那麼問題是:我無法將我的C#代碼映射到Object ID我的Guid領域。 這就是爲什麼我想知道是否有可能在MongoVue中插入一個GUID。

謝謝你們。 約翰

回答

2

您可以使用下面的符號在MongoVUE進入的GUID:

{ 
guid_field: new Guid("3bed978a-dc87-4fa4-8a1a-f0679387fa7e") 
} 

要插入一個新的GUID(Guid.NewGuid()),您可以輸入:

{ 
guid_field: new Guid() 
} 

所有的GUID轉換爲二進制類型3值。

+0

非常感謝Ishaan爵士。 – Gui 2011-06-20 11:38:11

+0

我右鍵單擊並按下插入鍵和使用類型JSON並放在你在textarea中顯示的格式,但我得到了錯誤:「數據輸入錯誤 - 請驗證您的值」。詳細信息說: 數據輸入錯誤 - 請驗證您的值 JSON閱讀器預期類型名稱,但找到'Guid'。 類型:System.IO.FileFormatException 有何想法? – 2014-08-28 21:28:05

+0

請注意,從MongoVUE 1.4.2及更高版本開始,語法已更改:不推薦使用'Guid()。而是使用「CSGUID('...')」來分析.NET GUID。「[changelog]中的 (http://www.mongovue.com/downloads/) – 2015-01-16 16:01:17

0

當我插入下面的類的實例:

public class C { 
    public Guid Id; 
    public int X; 
} 

它看起來像這樣在MongoVUE文本視圖:

/* 0 */ 
{ 
    "_id": { 
    "$binary": "q4TTjt8k4UyaJI6FwuZ1EQ==", 
    "$type": "03" 
    }, 
    "X": 1 
} 

其中GUID已表示爲子類型3的BSON二進制值,它不是ObjectId。

要在MongoVUE中插入GUID,您必須創建子類型3的BSON二進制值。難的部分是計算出要使用的Base64值。

此外,在MongoDB中一般存儲UUID存在問題。目前支持UUID的三種驅動程序(C#,Java和Python)在過去使用不同的字節順序來表示UUID的二進制表示,這使得生活變得非常困難。

未來版本的驅動程序將爲UUID使用新的二進制子類型4,並將全部在官方UUID網絡字節順序上進行標準化(16個字節的存儲順序與它們出現在UUID的字符串表示中的順序相同)。

當前版本的C#驅動程序(版本1.1剛剛發佈)有一些處理不同GUID表示的實驗性支持(請參閱GuidRepresentation枚舉以及它在哪裏使用)。

+0

那麼你推薦使用什麼來代替Guid? – Gui 2011-06-17 15:45:16

+1

我對MongoVUE進行了一些嘗試,我能夠重現這個問題。在插入_id具有二進制子類型3值的文檔時,_id被MongoVUE的ObjectId替換。我發郵件給MongoVUE的作者詢問這個問題。如果你有選擇,阻力最小的路徑是使用ObjectId而不是Guid。然而,我們的確打算完全支持Guids。 – 2011-06-17 20:38:24