MongoDB Java - 添加或更新数组

时间:2014-11-04 08:36:18

标签: java mongodb mongodb-java

我有订单收集:

{
orderId: "A1",
items: [ 
{itemId: "i001", qty: "20", description: "whatever..."},
{itemId: "i004", qty: "10", description: "whatever..."},
....
]
}
{
orderId: "A2"
...
}

如何添加或更新商品,具体取决于 itemId 是否存在 - 针对订单文档?
典型的更新会导致itemid的数量发生变化。

addToSet(如果不存在则添加,但不会更新)和推送(总是添加) - 似乎无法解决此问题。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用位置$运算符。

这是使用您的收藏品的例子:

db.Order.update({itemId : "A1", 'items.itemId' : "i001"}, {$inc : {'items.itemId.$.qty' : 10}});

但要小心,只能将它与更新查询一起使用,因为它不适用于upsert