當它是一個GUID時,遇到一些問題從Mongo在Id上查詢。我有一個非常愚蠢的測試課,它只是公開的Guid Id {get; set}。我創建一個集合,並插入這個測試類。在shell我認爲這是C#驅動程序處理GUID
{ "_id" : BinData(3,"9q+FwoU/RE2+Iq3w7hK1JA==") }
然後我嘗試做
var query = Query.EQ("Id", Id);
如果我看在調試器,它顯示爲
{ "Id" : CSUUID("c285aff6-3f85-4d44-be22-adf0ee12b524") }
但是,它不返回任何東西..我在這裏錯過了明顯的東西?另外,注意,shell不知道什麼是CSUUID ..有沒有辦法啓用它? CentOS服務器如果很重要...
完美感 - 謝謝! – XeroxDucati 2011-12-19 21:26:55
要停止添加CSUUID的驅動程序,您可以將值作爲字符串而不是GUID傳遞。 – Andrew 2014-01-08 02:43:03
@Andrew:不,你不能。這將查找數據庫中的字符串,並且'CSUUID(someString)!= someString'。 'ObjectId'也是如此。而且,這些字符串需要比它們的字節表示更多的存儲空間。更重要的是,該驅動程序不'添加'CSUUID'。 'CSUUID'是一個js幫助程序方法,它使您能夠輕鬆創建C#從JavaScript中的字符串使用的相同二進制表示,因此驅動程序的ToString()方法具有覆蓋,因此調試器中顯示的內容可用於從命令行查詢數據庫。 – mnemosyn 2014-01-08 09:46:57