Приложение сохраняет поле Guid в Mongo, и в конечном итоге оно сохраняется как BinData :
"_id" : new BinData(3, "WBAc3FDBDU+Zh/cBQFPc3Q==")
. Преимущество в данном случае — компактность, недостаток проявляется, когда нужно отладить приложение. Гиды передаются через URL-адреса, и постоянное преобразование их в BinData при переходе на консоль Mongo немного болезненно.
Каковы недостатки хранения Guid в виде строки в дополнение к увеличению размера? Одним из преимуществ является простота устранения неполадок :
"_id" : "3c901cac-5b90-4a09-896c-00e4779a9199"
. Вот прототип персистентной сущности в C#:
class Thing
{
[BsonIgnore]
public Guid Id { get; set; }
[BsonId]
public string DontUseInAppMongoId
{
get { return Id.ToString(); }
set { Id = Guid.Parse(value); }
}
}