1

そのため、MongoDB のコレクションを、オブジェクトの配列にあるフィールドで並べ替える必要があります。

私は持っている

"columns": [{
    "kind": "FirstKind",
    "descriptor": "Description1",
    "data": "Data to be sorted"
},{
    "kind": "SecondKind",
    "descriptor": "Description2",
    "data": "Data to be sorted"
}]

私が達成したいのは、「FirstKind」「Description1」または「SecondKind」「Description2」を選択し、コレクションをフィールドデータでソートすることです。次のようにして、MongoDBでそれを行う解決策を見つけました。

db.getCollection('results').aggregate(
    [{ 
        "$match": { 
           "$and": [{
               "columns.kind": "FirstKind"
            }, {
               "columns.descriptor": "Name" 
            }] 
        } 
    },{ 
        "$sort": { 
           "columns.data": -1 
         } 
    },{ 
        "$limit": 20 
    }]
)

私の問題は、それを Scala 上の ReactiveMongo に変換する方法です。私はこのドキュメントを理解しようとしています: http://reactivemongo.org/releases/0.11/documentation/advanced-topics/aggregation.htmlしかし、私はそれについて本当に混乱しています。Scala で ReactiveMongo で集計を使用したことのある人はいますか? ありがとう!

4

1 に答える 1

1

ReactiveMongo で最も簡単なことではないことに同意します。

コードを以下の ReactiveMongo 集計クエリ構文に変換しようとしました。ただし、私はそれを実行していないので、少し調整する必要があるかもしれません。

val dao = reactiveMongoApi.db.collection[BSONCollection]("results")
import dao.BatchCommands.AggregationFramework._

dao.aggregate(
  Match(BSONDocument(
    "columns.kind" -> "FirstKind",
    "columns.descriptor" -> "Name")),
  List(
    Sort(Descending("limit")),
    Limit(20)))
于 2016-07-01T05:44:16.227 に答える