Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

equals

項目一覧

  • 定義
  • 構文
  • オプション
  • スコアリングの動作
  • サンプル コレクション
  • サンプル インデックス
  • 基本的なクエリの例
  • ブール値の例
  • ObjectId の例
  • 日付の例
  • 数値の例
  • string例
  • UUID の例
  • null の例
  • 複合サンプル クエリ
equals

equals演算子は、フィールドが指定された値と一致するかどうかを確認します。 equalsは次のデータ型のクエリをサポートしています。

  • ブール値

  • objectId

  • 数値int32int64doubleなど)

  • date

  • Atlas Search トークン タイプとしてインデックス付けされた string

  • uuid

  • null

equals演算子を使用して、配列内のブール値、ObjectId、数値、日付、文字列( token型としてインデックス付き)をクエリできます。 配列内の少なくとも 1 つの要素がequals演算子の「値」フィールドと一致する場合、Atlas Search はそのドキュメントを結果セットに追加します。

注意

equals演算子は 15 桁の 10 進数までの数値をサポートします。 ドキュメントまたはクエリに小数点が追加されると、精度の問題やクエリの不正確性が生じる可能性があります。

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

{
$search: {
"index": <index name>, // optional, defaults to "default"
"equals": {
"path": "<field-to-search>",
"value": <boolean-value>|<objectId>|<number>|<date>|<string>,
"score": <score-options>
}
}
}

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

フィールド
タイプ
説明
必須
path
string
検索するインデックス付きフィールド。
はい
value
ブール値ObjectId数値日付stringuuid 、または null。
クエリする値。
はい
score
オブジェクト

一致する検索タームの結果に割り当てる スコア 。 スコアを変更するには、次のいずれかのオプションを使用します。

  • boost: 結果のスコアに指定された数値を掛けます。

  • constant: 結果のスコアを指定された数値に置き換えます。

  • function: 結果のスコアを指定された式で置き換えます。

クエリで score を使用する方法については、「結果内のドキュメントのスコアリング」を参照してください。

no

デフォルトでは、 equalsconstantスコアリングを使用します。 一致する各ドキュメントには1のスコアが与えられます。

配列内の値をクエリする場合、Atlas Search は、クエリに一致した配列内の値の数に基づいて、一致結果のスコアを変更しません。配列内の一致の数に関係なく、スコアは単一の一致と同じになります。

スコアリングの例については、「 」セクションを参照してください。

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

注意

次の例ではJavaScript形式を使用します。 これらのドキュメントをこの形式で追加するには、 mongoshを使用します。 Atlas UI には JSON形式が必要です。

db.users.insertMany([
{
"_id" : ObjectId("5ed698faa1199b471010d70c"),
"name" : "Jim Hall",
"verified_user" : true,
"account" : {
"new_user" : true,
"active_user" : true
},
"teammates" : [
ObjectId("5ed6990aa1199b471010d70d"),
ObjectId("59b99dbdcfa9a34dcd7885c8")
],
"region" : "East",
"account_created" : ISODate("2021-12-12T10:18:27.000+00:00"),
"employee_number" : 257,
"uuid" : UUID("fac32260-b511-4c69-8485-a2be5b7dda9e"),
"job_title": "engineer"
},
{
"_id" : ObjectId("5ed6990aa1199b471010d70d"),
"name" : "Ellen Smith",
"verified_user" : true,
"account" : {
"new_user" : false,
"active_user" : true
},
"teammates" : [
ObjectId("5a9427648b0beebeb69537a5"),
ObjectId("59b99dbdcfa9a34dcd7881d1")
],
"region" : "Southwest",
"account_created" : ISODate("2022-05-04T05:01:08.000+00:00"),
"employee_number" : 258,
"job_title": null
},
{
"_id" : ObjectId("5ed6994fa1199b471010d70e"),
"name" : "Fred Osgood",
"verified_user" : false,
"account" : {
"new_user" : false,
"active_user" : false
},
"teammates" : [
ObjectId("5a9427648b0beebeb69589a1"),
ObjectId("59b99dbdcfa9a34dcd7897d3")
],
"region" : "Northwest",
"account_created" : ISODate("2022-01-19T08:22:15.000+00:00"),
"employee_number" : 259,
"job_title": null
}
])
{
"_id" : ObjectId("5ed698faa1199b471010d70c"),
"name" : "Jim Hall",
"verified_user" : true,
"account" : {
"new_user" : true,
"active_user" : true
},
"teammates" : [
ObjectId("5ed6990aa1199b471010d70d"),
ObjectId("59b99dbdcfa9a34dcd7885c8")
],
"region" : "East",
"account_created" : ISODate("2021-12-12T10:18:27.000+00:00"),
"employee_number" : 257,
"uuid" : UUID("fac32260-b511-4c69-8485-a2be5b7dda9e"),
"job_title": "engineer"
}
{
"_id" : ObjectId("5ed6990aa1199b471010d70d"),
"name" : "Ellen Smith",
"verified_user" : true,
"account" : {
"new_user" : false,
"active_user" : true
},
"teammates" : [
ObjectId("5a9427648b0beebeb69537a5"),
ObjectId("59b99dbdcfa9a34dcd7881d1")
],
"region" : "Southwest",
"account_created" : ISODate("2022-05-04T05:01:08.000+00:00"),
"employee_number" : 258,
"job_title": null
}
{
"_id" : ObjectId("5ed6994fa1199b471010d70e"),
"name" : "Fred Osgood",
"verified_user" : false,
"account" : {
"new_user" : false,
"active_user" : false
},
"teammates" : [
ObjectId("5a9427648b0beebeb69589a1"),
ObjectId("59b99dbdcfa9a34dcd7897d3")
],
"region" : "Northwest",
"account_created" : ISODate("2022-01-19T08:22:15.000+00:00"),
"employee_number" : 259,
"job_title": null
}

usersコレクションは、次のインデックス定義でインデックス付けされます。

{
"mappings": {
"dynamic": true,
"fields": {
"name": {
"type": "token",
"normalizer": "lowercase"
}
}
}
}

インデックス定義では、以下を指定します。

  • すべての動的にインデックス付け可能なフィールドを自動的にインデックス化します。

  • equals 演算子を使用したstring検索をサポートするために、name フィールドを token としてインデックス化します。

Atlas Search インデックスの作成方法については、「 Atlas Search インデックスの作成 」を参照してください。

次の例では、 equals演算子を使用して、 usersコレクションからverified_userフィールドがtrueに設定されているドキュメントを検索します。

db.users.aggregate([
{
"$search": {
"equals": {
"path": "verified_user",
"value": true
}
}
},
{
"$project": {
"name": 1,
"_id": 0,
"score": { "$meta": "searchScore" }
}
}
])

上記のクエリは、次の結果を返します。

{ "name" : "Jim Hall", "score" : 1 }
{ "name" : "Ellen Smith", "score" : 1 }

「Jim Hall」と「Ellenpass のドキュメントはそれぞれverified_userフィールドがtrueに設定されているため、スコアが1になります。

次の例では、 equals演算子を使用して、 usersコレクション内でaccount.new_userフィールドにブール値trueが含まれるドキュメントを検索します。

db.users.aggregate([
{
"$search": {
"equals": {
"path": "account.new_user",
"value": true
}
}
}
])

上記のクエリでは「Jim Hall」のドキュメントが返されます。このドキュメントにはaccountオブジェクトに"new_user": trueが含まれているためです。

次の例では、 equals演算子を使用して、 usersコレクションからteammatesフィールドに値ObjectId("5a9427648b0beebeb69589a1")が含まれるドキュメントを検索します。

db.users.aggregate([
{
"$search": {
"equals": {
"path": "teammates",
"value": ObjectId("5a9427648b0beebeb69589a1")
}
}
}
])

上記のクエリでは「Fred Opsread」のドキュメントが返されます。このドキュメントでは、 teammates配列にObjectId("5a9427648b0beebeb69589a1")が含まれているためです。

次の例では、 equals演算子を使用して、 usersコレクションからaccount_createdフィールドにISODate("2022-05-04T05:01:08.000+00:00")と一致する値が含まれているドキュメントを検索します。

db.users.aggregate([
{
"$search": {
"equals": {
"path": "account_created",
"value": ISODate("2022-05-04T05:01:08.000+00:00")
}
}
}
])

上記のクエリでは「Ellen Schema」のドキュメントが返されます。このドキュメントには"account_created": 2022-05-04T05:01:08.000+00:00が含まれているためです。

次の例では、 equals演算子を使用して、 usersコレクションからemployee_numberフィールドに259と一致する値が含まれているドキュメントを検索します。

db.users.aggregate([
{
"$search": {
"equals": {
"path": "employee_number",
"value": 259
}
}
}
])

上記のクエリでは「Fred Opsread」のドキュメントが返されます。このドキュメントには"employee_number": 259が含まれているためです。

次の例では、 equals演算子を使用して、 usersコレクションからnameフィールドにJim Hallと一致する値が含まれているドキュメントを検索します。

db.users.aggregate([
{
"$search": {
"equals": {
"path": "name",
"value": "jim hall"
}
}
}
])

上記のクエリでは「Jim Hall」のドキュメントが返されます。このドキュメントではnameフィールドにJim Hallが含まれているためです。 Atlas Search は、 nameフィールドのインデックス定義で指定されているように、タームを小文字に正規化するため、小文字のクエリをドキュメント内の大文字の値と照合します。

次の例では、 equals演算子を使用して、 usersコレクションから特定の UUID と一致する値がuuidフィールドに含まれているドキュメントを検索します。

db.users.aggregate([
{
"$search": {
"equals": {
"path": "uuid",
"value": UUID("fac32260-b511-4c69-8485-a2be5b7dda9e")
}
}
}
])

上記のクエリでは「Jim Hall」のドキュメントが返されます。このドキュメントでは、 uuidフィールドに指定された UUID が含まれているためです。

次の例では、 equals演算子を使用して、 usersコレクションからjob_titleフィールドに null 値が含まれているドキュメントを検索します。

db.users.aggregate([
{
$search: {
"equals": {
"path": "job_title",
"value": null
}
}
}
])

上記のクエリでは、「Ellen Bridge」とFred Osgoodドキュメントが返されます。ドキュメントはjob_titleフィールドに null 値を含むためです。

次の例では、複合演算子をmustmustNot 、およびequalsと組み合わせて使用し、 regionフィールドがSouthwestで、かつverified_userフィールドがfalseではないドキュメントを検索します。

db.users.aggregate([
{
"$search": {
"compound": {
"must": {
"text": {
"path": "region",
"query": "Southwest"
}
},
"mustNot": {
"equals": {
"path": "verified_user",
"value": false
}
}
}
}
}
])

上記のクエリでは、コレクション内で検索条件を満たす唯一のユーザーである "Ellen Salmon" のドキュメントが返されます。

次のサンプル クエリには、これらの検索条件があります。

  • verified_userフィールドはtrueに設定する必要があります

  • 次のいずれか 1 つ を満たす必要があります。

    • teammates配列には値ObjectId("5ed6990aa1199b471010d70d")が含まれています

    • regionフィールドはNorthwestに設定されています

db.users.aggregate([
{
"$search": {
"compound": {
"must": {
"equals": {
"path": "verified_user",
"value": true
}
},
"should": [
{
"equals": {
"path": "teammates",
"value": ObjectId("5ed6990aa1199b471010d70d")
}
},
{
"text": {
"path": "region",
"query": "Northwest"
}
}
],
"minimumShouldMatch": 1
}
}
},
{
"$project": {
"name": 1,
"_id": 0,
"score": { "$meta": "searchScore" }
}
}
])

上記のクエリは、次の結果を返します。

{ "name" : "Jim Hall", "score" : 2 }

「Jim Hall」のドキュメントは、 must句と 2 つのshould句のうちの最初の句の要件を満たしているため、スコア2を受け取ります。

複合クエリを使用して複数の ObjectID を検索できます。 次のクエリの例では、 compound演算子とshould句を使用して 3 つの異なる ObjectID を検索しています。クエリを満たすには、少なくとも 2 つが表示される必要があります。

db.users.aggregate([
{
"$search": {
"compound": {
"should": [
{
"equals": {
"path": "teammates",
"value": ObjectId("5a9427648b0beebeb69537a5")
}
},
{
"equals": {
"path": "teammates",
"value": ObjectId("59b99dbdcfa9a34dcd7881d1")
}
},
{
"equals": {
"path": "teammates",
"value": ObjectId("5a9427648b0beebeb69579d0")
}
}
],
"minimumShouldMatch": 2
}
}
},
{
"$project": {
"name": 1,
"_id": 0,
"score": { "$meta": "searchScore" }
}
}
])

上記のクエリは、次の結果を返します。

{ "name" : "Ellen Smith", "score" : 2 }

「Ellen Bridge」のドキュメントは、 teammates配列に指定された ObjectID の 2 つが含まれているため、スコア2を受け取ります。

戻る

embeddedDocument