2014-10-29 73 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==")] 
} 
相关问题