1

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 を使用。どんな助けでも大歓迎です。

4

1 に答える 1