【发布时间】:2021-02-25 13:21:28
【问题描述】:
我想要一个从每个文档中取出最新版本的查询,并检查某个给定字符串 (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。 任何帮助将不胜感激。
【问题讨论】:
标签: mongodb scala mongodb-query aggregate mongo-scala-driver