Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB Java-添加或更新数组_Java_Mongodb_Mongodb Java - Fatal编程技术网

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方法?