我想要一个从每个文档中获取最新版本的查询,并检查某个给定的字符串 ( applicationId
) 是否在列表中allowedApplications
。
文档示例:
{
"applicationId" : "y...",
"allowedApplications": ["x..."],
"name" : "some-name",
"version" : 3
}
{
"applicationId" : "y...",
"allowedApplications": ["x..."],
"name" : "some-name",
"version" : 2
}
{
"applicationId" : "x...",
"allowedApplications": ["y..."],
"name" : "some-other-name",
"version" : 1
}
所以 MongoDB 查询是:
db.getCollection('..').aggregate(
[
{ "$match": { "allowedApplications": "x..." }},
{"$group": { "_id": "$name", "version": { "$max": "$version" }}}
]
)
查询将输出名称和版本(我稍后可能会添加allowedApplications
)。
我现在正在尝试在 Scala 的 mongodb 驱动程序中编写它。
我尝试了很多东西,例如:
collection
.aggregate(List(
`match`(equal("allowedApplications", "x..")),
group("$name", addToSet("version", addToSet("$max", "¢version")))
)
)
但无法让它工作。
使用 Scala 2.13.1 和 mongo-scala-driver 4.1.0。任何帮助,将不胜感激。