我们使用 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 无法检索实体。
因此我们需要以某种方式在更新查询中指定数字类型元数据,但我们找不到这样做的方法。
最佳答案
我们试验了同样的问题。由于这个和许多其他烦人的事情考虑使用 10gen 驱动程序(在这些 NoRM 驱动程序中被逐步淘汰)
http://groups.google.com/group/norm-mongodb/browse_thread/thread/2e44f73b2beaa984
关于c# - 使用 NoRM 和其他工具更新数值类型会更改 MongoDb 上的数值类型元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4758404/