$meta (テキスト検索メタデータ)
最終更新:2026-10-09
$meta (テキスト検索メタデータ)
$meta は $text 検索のメタデータを射影します。最もよく使うのは関連度スコア textScore です。`{ score: { $meta: 'textScore' } }` のように指定します。$text クエリでのみ動作し、textScore でソートする前に射影しておく必要があります — 関連度順の検索結果を実現する定番パターンです。
| カテゴリ | 投影 |
|---|---|
| MongoDB バージョン | 2.6+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <output field>: { $meta: 'textScore' } }
⚙️ パラメータ
| 出力フィールド | メタデータを受け取るフィールド(例: score)。 |
|---|---|
| メタデータ名 | 現在は 'textScore'。 |
戻り値:追加のメタデータフィールドを持つクエリ結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $meta: textScore を射影し、関連度順にソート
db.articles.find(
{ $text: { $search: 'mongodb' } },
{ title: 1, score: { $meta: 'textScore' } }
).sort({ score: { $meta: 'textScore' } })
出力:
// タイトルと関連度スコアを降順で返す
📌 注意事項
- $text クエリでのみ動作する
- textScore でソートする前に射影しておく
- textScore が大きいほど関連度が高い
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$meta はどのメタデータを返せますか?
A主にテキスト検索の関連度スコア textScore です。
Qなぜ textScore を先に射影するのですか?
Asort はクエリから見えるフィールドしか参照できないため、先に射影しておく必要があります。
Q$meta は $text 専用ですか?
Aはい。テキスト検索専用の機能です。