使用NoRM和其他工具更新数字类型会更改MongoDb上的数字类型元数据

时间:2011-01-21 11:46:28

标签: c# orm mongodb

我们正在使用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无法检索实体。

因此我们需要在更新查询中以某种方式指定数字类型元数据,但我们没有找到办法。

1 个答案:

答案 0 :(得分:2)

我们尝试了同样的问题。因为这个以及许多其他烦人的事情考虑使用10gen驱动程序(在theese NoRM驱动程序中逐渐淘汰)

http://groups.google.com/group/norm-mongodb/browse_thread/thread/2e44f73b2beaa984