0

これは私のコレクションです:

{ num: 4, title: "alpha", data: 7538 }
{ num: 2, title: "beta", data: 7538 }
{ num: 7, title: "beta", data: 7538 }
{ num: 5, title: "alpha", data: 7538 }

numMongoDB で最初にそれらを並べ替えてから、重複無視したいと考えていますtitle。私は期待しています:

{ num: 2, title: "beta", data: 7538 }
{ num: 4, title: "alpha", data: 7538 }

どの機能を使用する必要がありますか? だと思いaggregate()ますが、正確にはどのように使用しますか?

4

1 に答える 1

1

ええ、集約フレームワークを使用する必要があります。以下は、AF を使用して期待される結果を達成する方法の例numですASC

db.collection.aggregate(
    {
        "$group" : {
            _id : "$title",
            num : { "$min" : "$num" },
            data : { "$first" : "$data" }
        }
    },
    {
        "$sort" : { "num" : 1 }
    }
)

ここでは、基本的にドキュメントを ごとにグループ化し、titleの最小値numと の最初の値を取得していますdataDESC方法で並べ替えたい場合は、フィールド$maxの代わりに使用し、パイプライン フェーズで使用します。$minnum-1$sort

于 2013-07-26T19:38:37.897 に答える