MongoDB Java-添加或更新数组
我有订单收集:MongoDB Java-添加或更新数组,java,mongodb,mongodb-java,Java,Mongodb,Mongodb Java,我有订单收集: { orderId: "A1", items: [ {itemId: "i001", qty: "20", description: "whatever..."}, {itemId: "i004", qty: "10", description: "whatever..."}, .... ] } { orderId: "A2" ... } 根据订单文档中是否存在项目ID,如何添加或更新项目 典型的更新会导致itemid的数量变化 addToSet(如果不存在则添加,但不更新)
{
orderId: "A1",
items: [
{itemId: "i001", qty: "20", description: "whatever..."},
{itemId: "i004", qty: "10", description: "whatever..."},
....
]
}
{
orderId: "A2"
...
}
根据订单文档中是否存在项目ID,如何添加或更新项目
典型的更新会导致itemid的数量变化
addToSet(如果不存在则添加,但不更新)和push(始终添加)-似乎无法解决此问题。您可以尝试使用positional$运算符 这是使用您的收藏的一个示例:
db.Order.update({itemId : "A1", 'items.itemId' : "i001"}, {$inc : {'items.itemId.$.qty' : 10}});
但请注意,仅将其用于更新查询向量,因为它不适用于upsert有人知道如何使用Bson过滤器吗?使用MongoCollection updateOne方法?