在 spring-data-mongodb 创建的子对象上使用 criteria.all
Use criteria.all on subobjects created by spring-data-mongodb
我有一个包含子对象数组的对象,由 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 属性,但它们没有。这是一个已知问题吗?
这是 spring-data-mongodb 中的错误。 Spring 查询子对象时应将 _class 属性添加到子对象或省略它。
它似乎已在即将发布的 spring-data-mongodb (1.7.0.M1) 版本中修复。在此版本中,比较子对象的查询不会将 _class 属性添加到发送到 mongo 的 json。
我有一个包含子对象数组的对象,由 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 属性,但它们没有。这是一个已知问题吗?
这是 spring-data-mongodb 中的错误。 Spring 查询子对象时应将 _class 属性添加到子对象或省略它。
它似乎已在即将发布的 spring-data-mongodb (1.7.0.M1) 版本中修复。在此版本中,比较子对象的查询不会将 _class 属性添加到发送到 mongo 的 json。