2015-03-19 126 views
4

我是MongoDB的新手,我正在用Spring Data MongoDB開始一個新項目。如何避免在MongoDB中更改字段數據類型?

我創建了一個簡單的模型POJO,我插入一些文件到products集合:

@Document(collection="products") 
public class Product { 
    @Id 
    private String id; 
    private String name; 
    private double price; 
    private int quantity; 

    // ... 
} 

在我的數據庫字段類型是否正確映射:

  • nameString
  • priceDouble
  • quantityInt32

但做一些測試,我試圖通過$inc修改遞增quantity領域:

db.products.update({"name" : "A product"}, {"$inc" : {"quantity" : 1}}); 

現在quantity字段類型更改爲Double

我該如何避免這種情況?

+0

我會給這一點。簡單再現'db,test.insert({「a」:NumberLong(「1」)}); db.test.update({「a」:1},{「$ inc」:{「a」:1}})'。現在是雙。 – 2015-03-19 11:36:20

+0

@NeilLunn所以......課程是:「不要使用$ inc」? :) – davioooh 2015-03-19 11:42:41

+0

可能是這樣(ROFL),但不是這裏的首選「答案」。我希望看到一個合理的迴應,爲什麼這是如此(一般顯而易見),以及爲什麼不能進行更嚴格的類型檢查。我非常懶,不喜歡那些不是我的代碼。 – 2015-03-19 11:46:11

回答

1

感謝Neil Lunn評論,我意識到一種保留我的quantity字段的相同數據類型的方法是明確指定增量的類型。

在這種情況下,我有一個Int32這樣我就可以使用此代碼更新:

db.products.update({"name" : "A product"}, {"$inc" : {"quantity" : NumberInt(1)}}); 
相關問題