$text (全文検索)

最終更新:2026-10-09

$text (全文検索)

$text は、テキストインデックスが付与されたフィールドに対して全文検索を実行します。`{ $text: { $search: 'coffee shop' } }` のように使います。先にテキストインデックスを作成する必要があります(db.collection.createIndex({ content: 'text' }))。コレクションごとに最大 1 つです。ステミングとストップワード除去を適用し、二重引用符でフレーズ検索ができ、$meta: 'textScore' で関連度スコアを取得できます。

カテゴリ要素と評価
MongoDB バージョン2.6+
例の言語mongosh(シェル)

📝 構文

{ $text: { $search: <string>, $language: <language>, $caseSensitive: <boolean> } }

⚙️ パラメータ

search検索するキーワードまたはフレーズ。
language任意。ステミング用の言語。
caseSensitive任意。検索で大文字小文字を区別するかどうか。

戻り値:一致するドキュメントのカーソル

▶ 例

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

// $text: coffee shop の全文検索
// 先にテキストインデックスが必要
db.articles.find({ $text: { $search: 'coffee shop' } })

// 関連度(textScore)で並べ替え
db.articles.find(
  { $text: { $search: 'coffee' } },
  { score: { $meta: 'textScore' } }
).sort({ score: { $meta: 'textScore' } })

出力:

// coffee/shop のステムに一致する記事を返す。2 つ目のクエリは関連度順に並べる

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$text を使う前に何をすべきですか?
A先にテキストインデックスを作成します: db.coll.createIndex({ content: 'text' })。
Q$text と $regex の違いは?
A$text はステミングとスコアリングを持つインデックス型の単語検索です。$regex はパターンマッチで、通常はフルスキャンになります。
Q$text の結果を関連度順に並べるには?
A$meta: 'textScore' でスコアを射影し、sort({ score: { $meta: 'textScore' } }) で並べ替えます。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%