2011-01-21 49 views
2

我們使用NoRM C#驅動程序將我們的域類存儲在mongodb上。我們面臨的問題是關於這個數據庫的外部更新。當嘗試使用外部工具(例如mongo shell或MongoVUE)更新最初使用NoRM創建的現有域實體時,數字值將以不同的數字類型存儲。即:包含Int32字段值的域實體更新爲integer64(MongoVUE)或float64(mongo Shell)。使用NoRM和其他工具更新數字類型更改了MongoDb上的數字類型元數據

原來的C#實體:

Class Person 
{ 
    public string Name {get; set;} 
    public int Age {get; set;} 
} 

原始實體創建使用規範:

{ 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 

更新實體使用蒙戈殼牌:

db.Test.update({Age:22}, {$set:{Age:32}}) 

{ Name: 'John Smith', Age: 32 } // On MongoVUE Age field is shown as Float64 

當我們試圖取決於用於執行更新規範的工具使用規範獲取更新的實體檢索不到實體。

因此,我們需要以某種方式指定更新查詢上的數字類型元數據,但我們找不到這種方法。

回答