AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

exists (MongoDB Search 演算子)

exists

exists演算子は、ドキュメント内に指定されたインデックス付きフィールド名へのパスが存在するかどうかをテストします。 指定されたフィールドが存在してもインデックスがない場合、ドキュメントは結果セットに含まれません。 existsは、多くの場合、他の検索句と組み合わせて複合クエリの一部として使用されます。

exists の構文は次のとおりです。

{ $search: { "index": <index name>, // optional, defaults to "default" "exists": { "path": "<field-to-test-for>", "score": <options> } }}

exists では、次の用語を使用してクエリを作成します。

フィールド
タイプ
説明
必須

path

string

検索するインデックス付きフィールド。

はい

score

オブジェクト

一致する検索結果に割り当てる スコア 。 デフォルトのスコアを変更するオプションの詳細については、「 結果内のドキュメントのスコアリング 」を参照してください。

no

MongoDB Search は、結果セット内のすべてのドキュメントに対して constant スコアを 1 割り当てます。score オプションを使用して、デフォルトのMongoDB Search スコアをカスタマイズできます。MongoDB Search によって返されるデフォルトのスコアの変更の詳細については、スコアの変更を参照してください。

次の例は、 MongoDB Search Playground または クラスターで試すことができます。

このページの例では、次のドキュメントを含むfruitというコレクションを使用します。

{ "_id" : 1, "type" : "apple", "description" : "Apples come in several varieties, including Fuji, Granny Smith, and Honeycrisp."},{ "_id" : 2, "type" : "banana", "description" : "Bananas are usually sold in bunches of five or six."},{ "_id" : 3, "type": "apple", "description" : "Apple pie and apple cobbler are popular apple-based desserts."},{ "_id" : 4, "description" : "Types of citrus fruit include lemons, oranges, and grapefruit.", "quantities" : { "lemons": 200, "oranges": 240, "grapefruit": 160 }}

fruitコレクションには、デフォルトの標準アナライザを使用するデフォルトの動的MongoDB Searchインデックスがあります。standardアナライザはすべての単語を小文字にし、よく使われるストップワード("the", "a", "and", など)は無視します。

次のクエリは、 MongoDB Search クエリの exists 演算子を示しています。

次の例では、 typeという名前のフィールドを含むドキュメントを検索します。

db.fruit.aggregate([ { $search: { "exists": { "path": "type" } } }])

上記のクエリは、 コレクションの最初の 3 つのドキュメントを返します。 _id: 4を含むドキュメントは、 typeフィールドがないため含まれません。

➤ MongoDB Search Playground でこれを試してみてください。

埋め込みフィールドを検索するには、 ドット表記 を使用します。 次の例では、 quantitiesという名前のフィールド内に埋め込まれたlemonsという名前のフィールドがあるドキュメントを検索します。

db.fruit.aggregate([ { "$search": { "exists": { "path": "quantities.lemons" } } }])

➤ MongoDB Search Playground でこれを試してみてください。

次の例では、複合クエリの一部としてexistsを使用しています。

db.fruit.aggregate([ { $search: { "compound": { "must": [ { "exists": { "path": "type" } }, { "text": { "query": "apple", "path": "type" } }], "should": { "text": { "query": "fuji", "path": "description" } } } } }])

どちらのドキュメントにもtypeフィールドがあり、両方に検索用語appleが含まれています。 _id: 1を含むドキュメントが最初に返されるのは、 should句を満たすためです。

➤ MongoDB Search Playground でこれを試してみてください。