2015-03-19 123 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)}}); 
相关问题