我有一个包含spring-data-mongodb存储在mongo中的子对象数组的对象。这是一个类似于我的案例的例子:
{
"_class" : "com.foo.bar.Customer",
"_id" : ObjectId("5050aef830041f24ff2bd16e"),
"name": "John Doe"
"cart":
[
{
productName: "test",
"price": 9001
},
{
"productName": "test2",
"price": 1337
}
],
"discount":0
}
我正在进行更新查询。假设我想更新购物车中特定产品的所有客户的折扣。我正在做这个查询
Update update = new Update();
update.set("discount", 10)
List<Product> products = new ArrayList<Product>();
products.add(new Product("test", 9001);
products.add(new Product("test2", 1337);
WriteResult writeResult = mongoOps.updateMulti(query(where("cart").all(products)), update, Customer.class);
这不起作用,因为Spring将_class属性添加到$ all标准中使用的每个产品,但是当我第一次保存客户时,spring没有将_class添加到子对象。
有没有办法让这项工作?
P.S:我使用的是spring-data-mongodb 1.5.0。根据文档,子对象也应该具有_class属性,但它们不是。这是一个已知的问题吗?
答案 0 :(得分:0)
这是spring-data-mongodb中的一个错误。 Spring应该在子对象中添加_class属性,或在查询子对象时省略它。
似乎将在即将发布的spring-data-mongodb(1.7.0.M1)版本中修复。在此版本中,比较子对象的查询不会将_class属性添加到发送到mongo的json。