spring-boot - 如何使用 mongoTemplate 将 Mongo cli 命令转换为 spring-data-mongo 命令以进行 mongo 聚合
问题描述
我想使用 mongo 模板编写以下查询。
db.collection.aggregate([
{
$project: {
classes: {
$map: {
input: "$classes",
as: "class",
in: {
classId: "$$class.classId",
students: {
$filter: {
input: "$students",
cond: { $in: ["$$this._id", "$$class.studentIds"] }
}
}
}
}
}
}
}
])
我已经尝试了很多,但它不起作用。
TypedAggregation<OrderDocument> aggregate = newAggregation(StudentDocument.class,
match(Criteria.where("_id").is(id)),
project("classes")
.and(VariableOperators.Map
.itemsOf("classes")
.as("class")
.andApply(doc->
new Document()
.append("classId", "$$class.classId")
.append("students", ArrayOperators.Filter
.filter("students")
.as("student")
.by(ComparisonOperators.Eq.valueOf("$$student._id").equalToValue("$$class.studentIds"))))));
这没有给出来自 mongo shell 命令的所需响应。
解决方案
推荐阅读
- python - 如何将 QGraphicsEffect 应用于具有视口的子小部件?
- http - 为什么 _Layout.cshtml 中导致无处的操作链接报告 500 错误而不是 404 未找到文件?
- bash - 监视连续的文本文件并在命中某行时执行某些操作
- ios - 如何根据不同的屏幕尺寸(高度和宽度)调整子视图?
- r - 在R中的tidyverse(dplyr)中选择性地行求和
- javascript - Wordpress 中的脚本化多文件上传
- docker - 从 iso 和 apt 重复安装 docker
- javascript - 为什么我在 ajax post 调用后得到 json 响应页面?
- java - 我无法从使用 Java JLink 工具创建的应用程序映像中读取外部文件
- google-apps-script - 将 JSON 加载到 BigQuery 时出现列(字段)顺序问题