以下查询适用于MongoDB控制台。
db.getCollection('safetyPlan').update({"user": "username"}, {"$set": {"stepItems.$[i].items.deleteFl": true}}, {"arrayFilters": [{"i.items._id": new ObjectId("3w43esrw3er2343rsfsdf333")}]});
使用Jongo编写的相同查询:
collection.update("{user: #}", user)
.with("{'$set': {'stepItems.$[i].items.deleteFl': true}}, {'arrayFilters': [{'i.items"
+ "._id': #}]}", user, new ObjectId(planId));
当我尝试执行Java代码时,它会抛出:
java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: Too many parameters passed to query: {'$set': {'stepItems.$[i].items.deleteFl': true}}, {arrayFilters: [{'i.items._id': #}]}
有人可以给我正确的语法来使用Jongo使用arrayFilters。我怀疑Jongo是否支持它。
我使用的是Jongo:1.3.0和mongo-java-driver:3.7.1