2016-02-05 129 views
0

我在MongoDB中遇到問題。在mongodb中找不到id

我有文件與該結構

{ 
    "_id" : LUUID("5eca9329-6525-e544-bb27-f1797def8110"), 
    "StartTimestamp" : NumberLong(193), 
    "EndTimestamp" : NumberLong(193), 
} 

_id是從GUID(C#)產生。問題是當我想要在mongo控制檯中進行本機查詢時。

我查詢

db.getCollection('Object').findOne(
{ 
    "_id": LUUID("5eca9329-6525-e544-bb27-f1797def8110") 
}) 

有時我會不結果

+0

MongoDB中沒有「LUUID」數據類型。 C#驅動程序用什麼BSON類型來表示這種類型?您可以通過使用db.getCollection('Object')。findOne()'獲取次最佳文檔來檢查mongodb shell。我懷疑它要麼轉換爲C#LUUID類的字符串或對象表示形式。 – Philipp

回答

0

蒙戈對GUID支持目前的限制。 C#驅動程序正在編寫一個二進制表示形式的GUID,其中GUID的前三個字段是小端,而其他一些驅動程序正在使用大端表示形式。因此,取決於哪個驅動程序存儲了GUID,字符串表示形式將會不同,請參閱此JIRA標籤以獲取更多詳細信息,

簡而言之,由於您的GUID是由C#創建的,因此它存儲爲類型3的BinData對象,如圖所示下面。

BinData(3,"KZPKXiVlROW7J/F5fe+BEA==") 

這意味着,爲了找回您的記錄,你將不得不運行下面的查詢:

db.getCollection('Object').findOne(
{ 
    "_id": BinData(3,"KZPKXiVlROW7J/F5fe+BEA==") 
}) 

或者,你可以啓動一個蒙戈外殼時從GitHub加載助手腳本:

mongo --shell uuidhelpers.js 

當這個被載入您可以查詢您的GUID是這樣的:

db.data.find({_id:CSUUID("5eca9329-6525-e544-bb27-f1797def8110")})