如何避免在MongoDB中更改字段数据类型?
问题描述:
我是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;
// ...
}
在我的数据库字段类型是否正确映射:
-
name
到String
, -
price
到Double
, -
quantity
至Int32
但做一些测试,我试图通过$inc
修改递增quantity
领域:
db.products.update({"name" : "A product"}, {"$inc" : {"quantity" : 1}});
现在quantity
字段类型更改为Double
。
我该如何避免这种情况?
答
感谢Neil Lunn评论,我意识到一种保留我的quantity
字段的相同数据类型的方法是明确指定增量的类型。
在这种情况下,我有一个Int32
这样我就可以使用此代码更新:
db.products.update({"name" : "A product"}, {"$inc" : {"quantity" : NumberInt(1)}});
我会给这一点。简单再现'db,test.insert({“a”:NumberLong(“1”)}); db.test.update({“a”:1},{“$ inc”:{“a”:1}})'。现在是双。 – 2015-03-19 11:36:20
@NeilLunn所以......课程是:“不要使用$ inc”? :) – davioooh 2015-03-19 11:42:41
可能是这样(ROFL),但不是这里的首选“答案”。我希望看到一个合理的回应,为什么这是如此(一般显而易见),以及为什么不能进行更严格的类型检查。我非常懒,不喜欢那些不是我的代码。 – 2015-03-19 11:46:11