1. ホーム
  2. mongodb

[解決済み] MongoDB Compass: select distinct フィールド値

2022-02-10 17:12:47

質問

MongoDB Compass を使っていて、Mongo Shell を持っていません。私はMongoDB Compassツールを使用してクエリを構築し、私のコレクションから"genre"フィールドの異なる値を選択する必要があります。

サンプル入力です。

{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34e"},"title":"Bateau-mouche sur la Seine","year":{"$numberInt":"1896"},"imdbId":"tt0000042","genre":["Documentary”,”Short”],"viewerRating":{"$numberDouble":"3.8"},"viewerVotes":{"$numberInt":"17"},"director":"Georges Mlis"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c340"},"title":"Watering the Flowers","year":{"$numberInt":"1896"},"imdbId":"tt0000035","genre":["Short”],"viewerRating":{"$numberDouble":"5.3"},"viewerVotes":{"$numberInt":"33"},"director":"Georges M�li�s"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34a"},"title":"The Boxing Kangaroo","year":{"$numberInt":"1896"},"imdbId":"tt0000048","genre":["Short”],"viewerRating":{"$numberDouble":"5.2"},"viewerVotes":{"$numberInt":"48"},"director":"Birt Acres"}

期待される出力 : ドキュメンタリー、ショート

解き方は?

Compassのアグリゲーションフレームワークを使用することで、これを行うことができます。 $unwind グループ . $unwind を実行すると、ターゲット配列の各要素に対して一意なドキュメントが作成され、これによって $addToSet 演算子を使って、ジャンルを個別の要素として捕捉します。

パイプラインです。

[
  {
    $unwind: {
      path: '$genre',
      preserveNullAndEmptyArrays: true
    }
  },
  {
    $group: {
      _id: null,
      uniqueGenres: { $addToSet: '$genre' }
    }
  }
]

Compassの例については、以下のスクリーンショットを参照してください。