2014-10-29 75 views
2

我想將Guid列表存儲爲MongoDB中的字符串列表。對於單個的Guid我使用以下屬性:將MongoDb中的Guids列表存儲爲字符串列表

[BsonRepresentation(BsonType.String)] 
public Guid GuidId{ get; set; } 

有做同樣的屬性:

public List<Guid> GuidIdList { get; set; } 

我發現你怎麼可以用約定做,但我真的很喜歡這樣做有一個屬性:

How can I tell the MongoDB C# driver to store all Guids in string format?

+0

的缺點與存儲的GUID爲字符串的是,你不能使用MongoDB的聚合框架http://stackoverflow.com/a/11952062/ – chridam 2014-10-29 11:57:52

+0

@chridam從來沒有這樣的字符串。你鏈接的是用2.6之前的二進制值來描述一個限制。 – JohnnyHK 2014-10-29 12:25:38

回答

4

從別人工作的建議後,我已經試過這一個小測試:

[BsonRepresentation(BsonType.String)] 
public List<Guid> GuidIds { get; set; } 

猜猜看,那是行得通!這是你在MongoDB中看到的:

{ 
    "_id" : ObjectId("5450fa00f0640335e4117d46"), 
    "GuidId" : "f9e22da8-97c5-4dc7-ab26-ce5e095427a4", 
    "GuidIds" : ["48e1d0a9-74a6-4b51-af6b-b217012adeac", "5e1751b1-d945-4baa-beed-847e9696caa9"] 
} 

所以這個屬性正在處理列表中的元素。我認爲這會使列表本身的字符串表示。


額外的信息,如果沒有屬性

public List<Guid> GuidIds { get; set; } 

你得到這個MongoDB中:

{ 
    "_id" : ObjectId("5450fc4bf0640327b82cb259"), 
    "GuidId" : "e76f37a1-eba6-4afe-8ee4-8d431f97978c", 
    "GuidIds" : [new BinData(3, "E4x6bMtj606H06snHwmVGw=="), new BinData(3, "uV9vktKLzkOF/ylcOckfYg==")] 
} 
相關問題