java - 使用 MongoOperation 在 Spring Data MongoDB 中构建 ArrayFilters 更新
问题描述
我正在使用 Spring boot 2.2.1.RELEASE
。如何使用 Spring MongoOperation 编写以下 MongoDB 更新查询
db.cities.updateOne(
{
_id : ObjectId("5e78ec62bb5b406776e92fac")
},
{
$inc: {
"subscriptions.$[category].subscribers" : 1,
"subscriptions.$[category].options.$[option].subscribers" : 1
}
},
{ multi: true,
arrayFilters: [
{ "category._id": {$in: ["1", "2"]} },
{ "option.name": {$in: ["Time", "Gourmand", "Politics", "Entrepreneurship"]} }
]
}
)
我试过以下
Update update = new Update().inc("subscriptions.$[category].subscribers", 1).inc("subscriptions.$[category].options.$[option].subscribers", 1).filterArray(Criteria.where("category._id").in(Arrays.asList("1", "2")).andOperator(Criteria.where("option.name").in(Arrays.asList("Time", "Gourmand", "Politics", "Entrepreneurship"))));
UpdateResult result = mongoOperations.updateFirst(new Query(where("id").is(cityId)), update, CitiesDoc.class);
但我不断收到以下错误
org.springframework.dao.InvalidDataAccessApiUsageException:命令失败,出现错误 9 (FailedToParse):服务器 localhost:56740 上的“更新操作中无法识别的字段:arrayFilters”。完整的响应是 {"ok": 0.0, "errmsg": "Unrecognized field in update operation: arrayFilters", "code": 9, "codeName": "FailedToParse"}; 嵌套异常是 com.mongodb.MongoCommandException: 命令失败,错误 9 (FailedToParse): 'Unrecognized field in update operation: arrayFilters' on server localhost:56740. 完整的响应是 {"ok": 0.0, "errmsg": "Unrecognized field in update operation: arrayFilters", "code": 9, "codeName": "FailedToParse"}
不确定它给出的错误是哪个字段。一些建议会有所帮助。
解决方案
将以下内容添加到application.yaml
:
spring:
mongodb:
embedded:
version: 4.0.2
推荐阅读
- node.js - 在 Mac OS X 中创建反应应用程序时出现 EACCESS 权限错误
- html - 将数据从 angular typescript 推送到 chart.js 库的复杂性
- java - 错误休眠无法连接mysql数据库
- postgresql - Postgres返回错误:执行创建索引DDL语句时没有参数$1
- ruby-on-rails - 无法使用具有角度 9+ 的 Rails PaperClip Gem 上传图像
- javascript - XMLHttpRequest 只允许每页重新加载一个请求
- git - git rebase 不包含所有文件
- parsing - 如何正确使用 %empty?
- r - 如何防止 gridExtra::grid.arrage 在 R 中自动缩放 x 轴?
- javascript - 隐藏和取消隐藏 div 元素后 img 失去中心位置