我有一个棘手的查询,用于从数组内的子文档中删除元素。我想出了直接更新查询来执行它在命令行中运行良好的操作。
Document:
{
"_id": "1234",
"fruits": {
"fruits": [
{
"fruitName": "appl",
"state": "rotten",
"colour": "red"
},
{
"fruitName": "mango",
"state": "good",
"colour": "orange"
}
]
}
}
Query: working in cli and successfully remove the element from array.
db.getCollection('mycollection').update(
{'fruits.fruits.fruitName' : 'appl'},
{ $pull: { 'fruits.fruits': { 'state': 'rotten' } }},
{ multi: true }
);
我应该如何在 vertx mongoclient 或 mongo java 驱动程序中编写相同的查询?
最佳答案
您只需获取该 cli 查询并对其进行转换,以便可以使用 vertx-mongo-driver 执行它。它看起来像这样:
JsonObject query = new JsonObject().put("fruits.fruits.fruitName", "apple");
JsonObject update = new JsonObject().put("$pull",
new JsonObject().put("fruits.fruits",
new JsonObject().put("state","rotten")));
mongo.updateCollectionWithOptions("myCollection", query, update, new UpdateOptions().setMulti(true), res ->{
if(res.succeeded()){
//do something with the result
}
});
关于java - 需要 Mongodb 的帮助 - 使用 "$pull"和 vertx mongoclient 在数组内直接更新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57949178/