Mongodb NoRM和POCO

时间:2010-11-08 15:33:28

标签: c# mongodb norm

我正在用C#试验Mongodb和NoRM。

从我所看到的,在Mongodb中唯一标识文档的ObjectId是一种“特殊”Guid(在某种意义上是唯一的),但它有一些重要的部分,允许更容易的排序和索引(时间戳) ,机器哈希,processId和增量)。

我想保持我的对象真的POCO与自动生成的Guid为Id所以没有像ObjectId这样的外部类型会阻止我迁移到另一种技术或者回到经典的Ado.net或Nhibernate的东西。

另一种选择是在POCO中使用Id作为字符串并使用ObjectId.NewObjectId().ToString()

它的最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

ObjectId不是guids。 Guid是MS为其使用的UUID版本提供的名称。 ObjectIds是一种完全不同的算法。

话虽如此,你可以在mongo中使用任何你喜欢的ID作为ID,并且它不会有性能损失(在rails世界中,一些ORM主张使用字符串)

在mongo中使用ObjectId主要是为了节省大小。如果这是一笔大交易,只需使用别的东西,只要意识到使用不必要的大型ID字段最终只会浪费内存。但是,如果这是一个大问题,那么去Guids。

答案 1 :(得分:0)

你可以使用任何你喜欢的类型作为_id,因为Matt说它在它的收藏中是独一无二的。

将UUID存储在[DOC:BSON]类型中是最有效的,但如果空间和速度不是问题,您也可以使用十六进制字符串。