Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

in

項目一覧

  • 定義
  • 構文
  • フィールド
  • サンプル インデックス
  • サンプル クエリ

in演算子は、指定されたパスにある BSON numberdatebooleanobjectIduuid 、またはstringの値の配列を検索し、 を返しますフィールドの値が指定された配列内の任意の値と等しいドキュメント。 フィールドに配列が含まれている場合、 in演算子は、指定された配列内のいずれかの値と一致する要素が少なくとも 1 つ含まれる配列をフィールドに保持されているドキュメントを選択します。

in演算子の構文は次のとおりです。

{
$search: {
"index": <index name>, // optional, defaults to "default"
"in": {
"path": "<field-to-search>",
"score": <options>,
"value": <single-or-array-of-values-to-search>
}
}
}
フィールド
タイプ
説明
必要性
path
string

検索するインデックス付きフィールド。 検索するには、 ワイルドカード パスを指定することもできます。 詳細については、「 クエリ パスの構築」を参照してください。

フィールドで string値を検索するには、フィールドを Atlas Searchトークンタイプとしてインデックス化する必要があります。

必須
score
オブジェクト

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

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

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

  • function: 関数式を使用して結果スコアを置き換えます。

任意
value
ブール値ObjectId数値日付uuid 、またはstring

検索する値。 値は、サポートされているBSON types のいずれか 1 つのみの単一の値または値の配列のいずれかとして、異なるタイプを混在させることはできません。

フィールド内のstring値を検索するには、フィールドをAtlas Searchトークンタイプとしてインデックスする必要があります。

必須

次の例では、 in演算子を使用して、付属のsample_analytics.customersコレクション内のコレクションをクエリします。 サンプル データを Atlas クラスターにロードし、 defaultコレクションの 静的マッピング を使用する という名前の Atlas Search インデックスを 作成 すると、コレクションに対して次のクエリを実行できます。

サンプルのインデックス定義では、コレクション内のインデックス付きフィールドに対するin演算子クエリをサポートするために、次のアクションを指定します。

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

  • nameフィールドをトークンタイプとして静的にインデックスし、フィールドのテキストを小文字に変換します。

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

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

次のクエリは、 in演算子を使用して、特定の日付に手順を実行したカスタマーを対象に、単一の 値を含むbirthdateフィールドで検索します。 クエリは、 $projectステージを使用して次の操作を実行します。

  • 結果の_idフィールドを省略します。

  • namebirthdate結果には フィールドと フィールドのみが含まれます。

1db.customers.aggregate([
2 {
3 "$search": {
4 "in": {
5 "path": "birthdate",
6 "value": [ISODate("1977-03-02T02:20:31.000+00:00"), ISODate("1977-03-01T00:00:00.000+00:00"), ISODate("1977-05-06T21:57:35.000+00:00")]
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 0,
13 "name": 1,
14 "birthdate": 1
15 }
16 }
17])
1[
2 {
3 name: 'Elizabeth Ray',
4 birthdate: ISODate("1977-03-02T02:20:31.000Z")
5 },
6 {
7 name: 'Brad Cardenas',
8 birthdate: ISODate("1977-05-06T21:57:35.000Z")
9 }
10]

Atlas Search は、クエリで指定された日付に一致する 2 つのドキュメントを返します。

次のクエリでは、 in演算子を使用して、アカウント番号371138371139 、または371140を持つカスタマーに対して、番号の配列を含むaccountsフィールドをクエリします。 クエリは、 $projectステージを使用して次の操作を実行します。

  • 結果の_idフィールドを省略します。

  • nameaccounts結果には フィールドと フィールドのみが含まれます。

1db.customers.aggregate([
2 {
3 "$search": {
4 "in": {
5 "path": "accounts",
6 "value": [371138, 371139, 371140]
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 0,
13 "name": 1,
14 "accounts": 1
15 }
16 }
17])
1[
2 {
3 name: 'Elizabeth Ray',
4 accounts: [ 371138, 324287, 276528, 332179, 422649, 387979 ]
5 }
6]

Atlas Search では、クエリで指定されたアカウント番号371138に一致するドキュメントが 1 つだけ返されます。

次のクエリは、 text演算子を使用して、 nameフィールドに最初の名前がJamesであるカスタマーをクエリします。 クエリは、 in _idフィールドの指定された ObjectId に関連付けられたカスタマーの優先順位を指定します。 クエリは、 $limitステージを使用して出力を5の結果に制限し、 $projectステージを使用して次のようにします。

  • _idname結果には フィールドと フィールドのみが含まれます。

  • scoreという名前のフィールドを結果に追加する。

1db.customers.aggregate([
2 {
3 "$search": {
4 "compound": {
5 "must": [{
6 "in": {
7 "path": "name",
8 "value": ["james sanchez", "jennifer lawrence"]
9 }
10 }],
11 "should": [{
12 "in": {
13 "path": "_id",
14 "value": [ObjectId("5ca4bbcea2dd94ee58162a72"), ObjectId("5ca4bbcea2dd94ee58162a91")]
15 }
16 }]
17 }
18 }
19 },
20 {
21 "$limit": 5
22 },
23 {
24 "$project": {
25 "_id": 1,
26 "name": 1,
27 "score": { $meta: "searchScore" }
28 }
29 }
30])
1[
2 {
3 _id: ObjectId("5ca4bbcea2dd94ee58162a72"),
4 name: 'James Sanchez',
5 score: 2
6 },
7 {
8 _id: ObjectId("5ca4bbcea2dd94ee58162a71"),
9 name: 'Jennifer Lawrence',
10 score: 1
11 }
12]

Atlas Search では、 nameフィールドにJames SanchezJennifer Lawrenceを含むドキュメントが返されます。 Atlas Search は、 name: 'James Sanchez'を含むドキュメントは、 should句で指定されたObjectIdと一致するため、スコアが高くなります。

戻る

geoWithin