我们正在使用NoRM C#驱动程序在mongodb上存储我们的域类。我们面临的问题是关于此数据库的外部更新。尝试使用外部工具(如mongo shell或MongoVUE)更新最初使用NoRM创建的现有域实体时,数值将存储为不同的数字类型。即:包含Int32字段值的域实体更新为integer64(MongoVUE)或float64(mongo Shell)。
原始C#实体:
Class Person
{
public string Name {get; set;}
public int Age {get; set;}
}
使用NoRM创建的原始实体:
{ Name: 'John Smith', Age: 16 } // On MongoVUE Age field is shown as Int32
使用MongoVUE更新实体:
db.Test.update({Age:16}, {$set:{Age:22}})
{ Name: 'John Smith', Age: 22 } // On MongoVUE Age field is shown as Int16
使用Mongo Shell更新实体:
db.Test.update({Age:22}, {$set:{Age:32}})
{ Name: 'John Smith', Age: 32 } // On MongoVUE Age field is shown as Float64
当我们尝试使用NoRM检索更新的实体时,取决于用于执行更新的工具,NoRM无法检索实体。
因此我们需要在更新查询中以某种方式指定数字类型元数据,但我们没有找到办法。
答案 0 :(得分:2)
我们尝试了同样的问题。因为这个以及许多其他烦人的事情考虑使用10gen驱动程序(在theese NoRM驱动程序中逐渐淘汰)
http://groups.google.com/group/norm-mongodb/browse_thread/thread/2e44f73b2beaa984