distinct() (重複のない値)

最終更新:2026-10-09

distinct() (重複のない値)

distinct() はコレクション内の指定フィールドのすべての一意な値を返します。例: `db.users.distinct('address.city')`。完全なドキュメントではなく、重複を除いた値の配列を返すため、カテゴリや利用可能な値の列挙に便利です。インデックスの無い大規模フィールドで distinct を実行すると遅くなる可能性があり、結果は 16MB の BSON 上限に制限されることに注意してください。

カテゴリ読み取り
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

db.<collection>.distinct(<field>, <filter>)

⚙️ パラメータ

フィールド重複を排除するフィールド名。'address.city' のようなドット記法も使用できます。
フィルター条件任意。値を収集する前にドキュメントを絞り込みます。

戻り値:異なる値の配列。何もマッチしない場合は空。

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// distinct: 成人ユーザーの都市をすべて列挙する
const cities = db.users.distinct(
  'address.city',
  { age: { $gt: 18 } }
)
cities

出力:

[ 'Beijing', 'Shanghai', 'Guangzhou' ]

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Qdistinct とアグリゲーションの $group による重複排除はどう違いますか?
Adistinct() は一意な値の単純な配列を返します。$group はカウントや合計など、より豊かな集計もできます。
Qdistinct はネストしたフィールドに使えますか?
A使えます。ドットパスを使います。例: db.users.distinct('address.city')
Q結果が巨大だと distinct は失敗しますか?
A結果が 16MB の BSON 上限を超えるとエラーになります。非常に大きな結果には $group パイプラインに切り替えてください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%