Docs Menu
Docs Home
/
MongoDB Atlas
/ /

ステップ 2: Atlas 検索クエリを実行する

項目一覧

  • 手順
  • 次のステップ

➤ [言語の選択] ドロップダウン メニューを使用して、このページの例の言語を設定します。


重要

サーバーレスインスタンスで使用できない機能

サーバーレスインスタンスは現時点ではこの機能をサポートしていません。詳細については、 サーバーレスインスタンスの制限を参照してください。

チュートリアルのこの部分では、Atlas 検索クエリの実行についてガイドします。

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. まだ表示されていない場合は、サイドバーの [Clusters] をクリックします。

    [ クラスター]ページが表示されます。

2

GoAtlas Searchページには、サイドバー、Data Explorer 、またはクラスターの詳細ページから できます。

  1. サイドバーで、 Services見出しの下のAtlas Searchをクリックします。

  2. [ Select data sourceドロップダウンからクラスターを選択し、[ Go to Atlas Search ] をクリックします。

    Atlas Searchページが表示されます。

  1. クラスターの [Browse Collections] ボタンをクリックします。

  2. データベースを展開し、コレクションを選択します。

  3. コレクションのSearch Indexesタブをクリックします。

    Atlas Searchページが表示されます。

  1. クラスタの名前をクリックします。

  2. [Atlas Search] タブをクリックします。

    Atlas Searchページが表示されます。

3

クエリするインデックスの右側にある [ Query ] ボタンをクリックします。

4

Edit Queryをクリックすると、 JSON形式のデフォルトのクエリ構文サンプルが表示されます。

5

次のクエリをコピーして、 Query Editorに貼り付け、 Query EditorSearchボタンをクリックします。

[
{
$search: {
index: "default",
text: {
query: "baseball",
path: "plot"
}
}
}
]
SCORE: 3.8531038761138916 _id: "573a13b3f29313caabd3b409"
fullplot: "Three guys, all their lives, have been living in the shadow of bullies…"
imdb: Object
year: 2006
SCORE: 3.6254453659057617 _id: "573a1399f29313caabcee801"
plot: "A young boy is bequeathed the ownership of a professional baseball tea..."
genres: Array
runtime: 119
SCORE: 3.6254453659057617 _id: "573a139af29313caabcefe18"
plot: "A trained chimpanzee plays third base for a minor-league baseball team..."
genres: Array
runtime: 94
SCORE: 3.489243507385254 _id: "573a1393f29313caabcdca79"
plot: "The story of the life and career of the famed baseball player, Lou Geh..."
genres: Array
runtime: 128
SCORE: 3.489243507385254 _id: "573a1399f29313caabcecef1"
plot: "Babe Ruth becomes a baseball legend but is unheroic to those who know ..."
genres: Array
runtime: 115
SCORE: 3.4249095916748047 _id: "573a1398f29313caabcebccf"
plot: "Two disquieted junior baseball players seek revenge on the local yakuz…"
genres: Array
runtime: 96
SCORE: 3.4249095916748047 _id: "573a13bdf29313caabd5813d"
plot: "Dominican baseball star Miguel "Sugar" Santos is recruited to play in …"
genres: Array
runtime: 114
SCORE: 3.3629050254821777 _id: "573a139af29313caabcefe79"
plot: "An all star baseball player becomes the unhealthy focus of a down on h…"
genres: Array
runtime: 116
SCORE: 3.303105354309082 _id: "573a1399f29313caabced370"
plot: "A fading baseball player is traded to a Japanese team and has trouble …"
genres: Array
runtime: 108
SCORE: 3.303105354309082 _id: "573a13a0f29313caabd05773"
fullplot: "The story of Baseball Hall-of-Famer Hank Greenberg is told through arc…"
imdb: Object
year: 1998

$search パイプライン ステージの詳細については、リファレンス ページを参照してください。集計パイプラインの完全なドキュメントについては、 「MongoDB Server マニュアル」を参照してください。

6

Search Testerでは、返されるドキュメント内のすべてのフィールドが表示されない場合があります。 クエリパスで指定したフィールドを含むすべてのフィールドを表示するには、結果内のドキュメントを展開します。

1

ターミナル ウィンドウでmongoshを開き、クラスターに接続します。 接続の詳細な手順については、「 mongosh経由での接続 」を参照してください。

2

mongoshプロンプトで次のコマンドを実行します。

use sample_mflix
3

次のクエリは、plotフィールドでbaseballという単語を検索します。出力を5の結果に制限する $limit ステージと、 titleplotを除くすべてのフィールドを除外する $project ステージが含まれています。

db.movies.aggregate([
{
$search: {
"text": {
"query": "baseball",
"path": "plot"
}
}
},
{
$limit: 5
},
{
$project: {
"_id": 0,
"title": 1,
"plot": 1
}
}
])
{
"plot" : "A trio of guys try and make up for missed
opportunities in childhood by forming a three-player
baseball team to compete against standard children
baseball squads.",
"title" : "The Benchwarmers"
}
{
"plot" : "A young boy is bequeathed the ownership of a
professional baseball team.",
"title" : "Little Big League"
}
{
"plot" : "A trained chimpanzee plays third base for a
minor-league baseball team.",
"title" : "Ed"
}
{
"plot" : "The story of the life and career of the famed
baseball player, Lou Gehrig.",
"title" : "The Pride of the Yankees"
}
{
"plot" : "Babe Ruth becomes a baseball legend but is
unheroic to those who know him.",
"title" : "The Babe"
}

$search パイプライン ステージの詳細については、リファレンス ページを参照してください。集計パイプラインの完全なドキュメントについては、 「MongoDB Server マニュアル」を参照してください。

4

$search には、さまざまなタイプのクエリを作成するための演算子がいくつか用意されています。次のクエリでは、複合演算子を使用して複数の演算子を 1 つのクエリに結合します。これには次の検索条件があります。

  • plot フィールドには Hawaii または Alaska のいずれかが含まれている必要があります。

  • plot フィールドには、年などの 4 桁の数字が含まれている必要があります。

  • genres フィールドには ComedyRomance も含めることはできません。

  • title フィールドには BeachSnow も含めることはできません。

db.movies.aggregate([
{
$search: {
"compound": {
"must": [ {
"text": {
"query": ["Hawaii", "Alaska"],
"path": "plot"
},
},
{
"regex": {
"query": "([0-9]{4})",
"path": "plot",
"allowAnalyzedField": true
}
} ],
"mustNot": [ {
"text": {
"query": ["Comedy", "Romance"],
"path": "genres"
}
},
{
"text": {
"query": ["Beach", "Snow"],
"path": "title"
}
} ]
}
}
},
{
$project: {
"title": 1,
"plot": 1,
"genres": 1,
"_id": 0
}
}
])
{
"plot" : "A modern aircraft carrier is thrown back in time
to 1941 near Hawaii, just hours before the Japanese attack
on Pearl Harbor.",
"genres" : [ "Action", "Sci-Fi" ],
"title" : "The Final Countdown"
}
{
"plot" : "Follows John McCain's 2008 presidential
campaign, from his selection of Alaska Governor Sarah
Palin as his running mate to their ultimate defeat in the
general election.",
"genres" : [ "Biography", "Drama", "History" ],
"title" : "Game Change"
}
{
"plot" : "A devastating and heartrending take on grizzly
bear activists Timothy Treadwell and Amie Huguenard, who
were killed in October of 2003 while living among
grizzlies in Alaska.",
"genres" : [ "Documentary", "Biography" ],
"title" : "Grizzly Man"
}
{
"plot" : "Truman Korovin is a lonely, sharp-witted cab
driver in Fairbanks, Alaska, 1980. The usual routine of
picking up fares and spending his nights at his favorite
bar, the Boatel, is disrupted ...",
"genres" : [ "Drama" ],
"title" : "Chronic Town"
}
1

MongoDB Compass を開き、クラスターに接続します。 接続の詳細な手順については、「 Compass 経由での接続 」を参照してください。

2

Database画面で、 sample_mflixデータベースをクリックし、 moviesコレクションをクリックします。

3

次のクエリは、plotフィールドでbaseballという単語を検索します。出力を5の結果に制限する $limit ステージと、 titleplotを除くすべてのフィールドを除外する $project ステージが含まれています。

MongoDB Compass で単純な Atlas 検索クエリを実行するには:

  1. [Aggregations] タブをクリックします。

  2. Select...をクリックし、ドロップダウンからステージを選択し、そのステージのクエリを追加して、次の各パイプライン ステージを構成します。 ステージを追加するには、 Add Stageをクリックします。

    パイプラインステージ
    クエリ

    $search

    {
    "text": {
    "query": "baseball",
    "path": "plot"
    }
    }

    $limit

    5

    $project

    {
    "_id": 0,
    "title": 1,
    "plot": 1
    }

Auto Previewを有効にした場合、MongoDB Compass は$projectパイプライン ステージの横に次のドキュメントを表示します。

{
"plot" : "A trio of guys try and make up for missed
opportunities in childhood by forming a three-player
baseball team to compete against standard children
baseball squads.",
"title" : "The Benchwarmers"
}
{
"plot" : "A young boy is bequeathed the ownership of a
professional baseball team.",
"title" : "Little Big League"
}
{
"plot" : "A trained chimpanzee plays third base for a
minor-league baseball team.",
"title" : "Ed"
}
{
"plot" : "The story of the life and career of the famed
baseball player, Lou Gehrig.",
"title" : "The Pride of the Yankees"
}
{
"plot" : "Babe Ruth becomes a baseball legend but is
unheroic to those who know him.",
"title" : "The Babe"
}

$search パイプライン ステージの詳細については、リファレンス ページを参照してください。集計パイプラインの完全なドキュメントについては、 「MongoDB Server マニュアル」を参照してください。

4

$search には、さまざまなタイプのクエリを作成するための演算子がいくつか用意されています。次のクエリでは、複合演算子を使用して複数の演算子を 1 つのクエリに結合します。これには次の検索条件があります。

  • plot フィールドには Hawaii または Alaska のいずれかが含まれている必要があります。

  • plot フィールドには、年などの 4 桁の数字が含まれている必要があります。

  • genres フィールドには ComedyRomance も含めることはできません。

  • title フィールドには BeachSnow も含めることはできません。

MongoDB Compass 複雑な Atlas 検索クエリを実行するには:

  1. [Aggregations] タブをクリックします。

  2. Select...をクリックし、ドロップダウンからステージを選択し、そのステージのクエリを追加して、次の各パイプライン ステージを構成します。 ステージを追加するには、 Add Stageをクリックします。

    パイプラインステージ
    クエリ

    $search

    {
    "compound": {
    "must": [ {
    "text": {
    "query": ["Hawaii", "Alaska"],
    "path": "plot"
    },
    },
    {
    "regex": {
    "query": "([0-9]{4})",
    "path": "plot",
    "allowAnalyzedField": true
    }
    } ],
    "mustNot": [ {
    "text": {
    "query": ["Comedy", "Romance"],
    "path": "genres"
    }
    },
    {
    "text": {
    "query": ["Beach", "Snow"],
    "path": "title"
    }
    } ]
    }
    }

    $project

    {
    "title": 1,
    "plot": 1,
    "genres": 1,
    "_id": 0
    }

Auto Previewを有効にした場合、MongoDB Compass は$projectパイプライン ステージの横に次のドキュメントを表示します。

{
"plot" : "A modern aircraft carrier is thrown back in time
to 1941 near Hawaii, just hours before the Japanese attack
on Pearl Harbor.",
"genres" : [ "Action", "Sci-Fi" ],
"title" : "The Final Countdown"
}
{
"plot" : "Follows John McCain's 2008 presidential
campaign, from his selection of Alaska Governor Sarah
Palin as his running mate to their ultimate defeat in the
general election.",
"genres" : [ "Biography", "Drama", "History" ],
"title" : "Game Change"
}
{
"plot" : "A devastating and heartrending take on grizzly
bear activists Timothy Treadwell and Amie Huguenard, who
were killed in October of 2003 while living among
grizzlies in Alaska.",
"genres" : [ "Documentary", "Biography" ],
"title" : "Grizzly Man"
}
{
"plot" : "Truman Korovin is a lonely, sharp-witted cab
driver in Fairbanks, Alaska, 1980. The usual routine of
picking up fares and spending his nights at his favorite
bar, the Boatel, is disrupted ...",
"genres" : [ "Drama" ],
"title" : "Chronic Town"
}
1
  1. simple-query-example という新しいディレクトリを作成し、dotnet new コマンドでプロジェクトを初期化します。

    mkdir simple-query-example
    cd simple-query-example
    dotnet new console
  2. .NET/C# ドライバーを依存関係としてプロジェクトに追加します。

    dotnet add package MongoDB.Driver
  3. Program.cs ファイルの内容を、次のコードで置き換えます。

    このコード例では、次のタスクを実行します。

    • mongodb パッケージと依存関係をインポートします。

    • Atlas クラスターへの接続を確立します。

    • plot フィールドで baseball という単語を検索します。これには以下が含まれます。

      • 出力を5の結果に制限する$limitステージ

      • $project ステージでは、titleplotを除くすべてのフィールドを除外します。

    • カーソルを反復処理して、クエリに一致するドキュメントを出力します。

    1using MongoDB.Bson;
    2using MongoDB.Bson.Serialization.Attributes;
    3using MongoDB.Bson.Serialization.Conventions;
    4using MongoDB.Driver;
    5using MongoDB.Driver.Search;
    6
    7public class SimpleQuery
    8{
    9 private const string MongoConnectionString = "<connection-string>";
    10
    11 public static void Main(string[] args)
    12 {
    13 // allow automapping of the camelCase database fields to our MovieDocument
    14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() };
    15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
    16
    17 // connect to your Atlas cluster
    18 var mongoClient = new MongoClient(MongoConnectionString);
    19 var mflixDatabase = mongoClient.GetDatabase("sample_mflix");
    20 var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies");
    21
    22 // define and run pipeline
    23 var results = moviesCollection.Aggregate()
    24 .Search(Builders<MovieDocument>.Search.Text(movie => movie.Plot, "baseball"))
    25 .Project<MovieDocument>(Builders<MovieDocument>.Projection
    26 .Include(movie => movie.Plot)
    27 .Include(movie => movie.Title)
    28 .Exclude(movie => movie.Id))
    29 .Limit(5)
    30 .ToList();
    31
    32 // print results
    33 foreach (var movie in results)
    34 {
    35 Console.WriteLine(movie.ToJson());
    36 }
    37 }
    38}
    39
    40[BsonIgnoreExtraElements]
    41public class MovieDocument
    42{
    43 [BsonIgnoreIfDefault]
    44 public ObjectId Id { get; set; }
    45 public string Plot { get; set; }
    46 public string Title { get; set; }
    47}
  4. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  5. Program.csファイルをコンパイルして実行します。

    dotnet run simple-query-example.csproj
    {
    "plot" : "A trio of guys try and make up for missed
    opportunities in childhood by forming a three-player
    baseball team to compete against standard children baseball
    squads.",
    "title" : "The Benchwarmers"
    }
    {
    "plot" : "A young boy is bequeathed the ownership of a
    professional baseball team.",
    "title" : "Little Big League"
    }
    {
    "plot" : "A trained chimpanzee plays third base for a
    minor-league baseball team.",
    "title" : "Ed"
    }
    {
    "plot" : "The story of the life and career of the famed
    baseball player, Lou Gehrig.",
    "title" : "The Pride of the Yankees"
    }
    {
    "plot" : "Babe Ruth becomes a baseball legend but is
    unheroic to those who know him.",
    "title" : "The Babe"
    }
2
  1. complex-query-example という新しいディレクトリを作成し、dotnet new コマンドでプロジェクトを初期化します。

    mkdir complex-query-example
    cd complex-query-example
    dotnet new console
  2. .NET/C# ドライバーを依存関係としてプロジェクトに追加します。

    dotnet add package MongoDB.Driver
  3. Program.cs ファイルの内容を、次のコードで置き換えます。

    $search には、さまざまなタイプのクエリを作成するための演算子がいくつか用意されています。次のコード例では、複合演算子を使用して複数の演算子を 1 つのクエリに結合します。これには次の検索条件があります。

    • plot フィールドには Hawaii または Alaska のいずれかが含まれている必要があります。

    • plot フィールドには、年などの 4 桁の数字が含まれている必要があります。

    • genres フィールドには ComedyRomance も含めることはできません。

    • title フィールドには BeachSnow も含めることはできません。

    1using MongoDB.Bson;
    2using MongoDB.Bson.Serialization.Attributes;
    3using MongoDB.Bson.Serialization.Conventions;
    4using MongoDB.Driver;
    5using MongoDB.Driver.Search;
    6
    7public class ComplexQuery
    8{
    9 private const string MongoConnectionString = "<connection-string>";
    10
    11 public static void Main(string[] args)
    12 {
    13 // allow automapping of the camelCase database fields to our MovieDocument
    14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() };
    15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true);
    16
    17 // connect to your Atlas cluster
    18 var mongoClient = new MongoClient(MongoConnectionString);
    19 var mflixDatabase = mongoClient.GetDatabase("sample_mflix");
    20 var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies");
    21
    22 // declare data for the compound query
    23 string[] terms = { "Hawaii", "Alaska" };
    24 string[] genres = { "Comedy", "Romance" };
    25 string[] titles = { "Beach", "Snow" };
    26
    27 // define and run pipeline
    28 var results = moviesCollection.Aggregate()
    29 .Search(Builders<MovieDocument>.Search.Compound()
    30 .Must(Builders<MovieDocument>.Search.Text(movie => movie.Plot, terms))
    31 .Must(Builders<MovieDocument>.Search.Regex(movie => movie.Plot, "([0-9]{4})", true))
    32 .MustNot((Builders<MovieDocument>.Search.Text(movie => movie.Genres, genres)))
    33 .MustNot((Builders<MovieDocument>.Search.Text(movie => movie.Title, titles))))
    34 .Project<MovieDocument>(Builders<MovieDocument>.Projection
    35 .Include(movie => movie.Genres)
    36 .Include(movie => movie.Plot)
    37 .Include(movie => movie.Title)
    38 .Exclude(movie => movie.Id))
    39 .ToList();
    40
    41 // print results
    42 foreach (var movie in results)
    43 {
    44 Console.WriteLine(movie.ToJson());
    45 }
    46 }
    47}
    48
    49[BsonIgnoreExtraElements]
    50public class MovieDocument
    51{
    52 [BsonIgnoreIfDefault]
    53 public ObjectId Id { get; set; }
    54 public string[] Genres { get; set; }
    55 public string Plot { get; set; }
    56 public string Title { get; set; }
    57}
  4. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  5. Program.csファイルをコンパイルして実行します。

    dotnet run complex-query-example.csproj
    {
    "genres" : ["Action", "Sci-Fi"],
    "plot" : "A modern aircraft carrier is thrown back in time to 1941 near Hawaii, just hours before the Japanese attack on Pearl Harbor.",
    "title" : "The Final Countdown"
    }
    {
    "genres" : ["Biography", "Drama", "History"],
    "plot" : "Follows John McCain's 2008 presidential campaign,
    from his selection of Alaska Governor Sarah Palin as his
    running mate to their ultimate defeat in the general
    election.",
    "title" : "Game Change"
    }
    {
    "genres" : ["Documentary", "Biography"],
    "plot" : "A devastating and heartrending take on grizzly
    bear activists Timothy Treadwell and Amie Huguenard, who
    were killed in October of 2003 while living among grizzlies
    in Alaska.",
    "title" : "Grizzly Man"
    }
    {
    "genres" : ["Drama"],
    "plot" : "Truman Korovin is a lonely, sharp-witted cab
    driver in Fairbanks, Alaska, 1980. The usual routine of
    picking up fares and spending his nights at his favorite
    bar, the Boatel, is disrupted ...",
    "title" : "Chronic Town"
    }
1
  1. simple-query.goという名前のファイルを作成します。

  2. コード例をコピーして、 simple-query.goファイルに貼り付けます。

    このコード例では、次のタスクを実行します。

    • mongodb パッケージと依存関係をインポートします。

    • Atlas クラスターへの接続を確立します。

    • plotフィールドでbaseballという単語を検索します。これには、次のステージが含まれます。

      • 出力を5の結果に制限する$limitステージ

      • $project ステージでは、titleplotを除くすべてのフィールドを除外します。

    • カーソルを反復処理して、クエリに一致するドキュメントを出力します。

    1package main
    2import (
    3 "context"
    4 "fmt"
    5 "time"
    6
    7 "go.mongodb.org/mongo-driver/bson"
    8 "go.mongodb.org/mongo-driver/mongo"
    9 "go.mongodb.org/mongo-driver/mongo/options"
    10)
    11// define structure of movies collection
    12type MovieCollection struct {
    13 title string `bson:"Title,omitempty"`
    14 plot string `bson:"Plot,omitempty"`
    15}
    16func main() {
    17 var err error
    18 // connect to the Atlas cluster
    19 ctx := context.Background()
    20 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-string>"))
    21 if err != nil {
    22 panic(err)
    23 }
    24 defer client.Disconnect(ctx)
    25 // set namespace
    26 collection := client.Database("sample_mflix").Collection("movies")
    27 // define pipeline
    28 searchStage := bson.D{{"$search", bson.D{{"text", bson.D{{"path", "plot"},{"query", "baseball"}}}}}}
    29 limitStage := bson.D{{"$limit", 5}}
    30 projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"plot", 1}, {"_id", 0}}}}
    31 // specify the amount of time the operation can run on the server
    32 opts := options.Aggregate().SetMaxTime(5 * time.Second)
    33 // run pipeline
    34 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, limitStage, projectStage}, opts)
    35 if err != nil {
    36 panic(err)
    37 }
    38 // print results
    39 var results []bson.D
    40 if err = cursor.All(context.TODO(), &results); err != nil {
    41 panic(err)
    42 }
    43 for _, result := range results {
    44 fmt.Println(result)
    45 }
    46}
  3. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  4. 次のコマンドを実行して、コレクションをクエリします。

    go run simple-query.go
    [
    {plot A trio of guys try and make up for missed opportunities in childhood by forming a three-player baseball team to compete against standard children baseball squads.}
    {title The Benchwarmers}
    ]
    [
    {plot A young boy is bequeathed the ownership of a professional baseball team.}
    {title Little Big League}
    ]
    [
    {plot A trained chimpanzee plays third base for a minor-league baseball team.}
    {title Ed}
    ]
    [
    {plot The story of the life and career of the famed baseball player, Lou Gehrig.}
    {title The Pride of the Yankees}
    ]
    [
    {plot Babe Ruth becomes a baseball legend but is unheroic to those who know him.}
    {title The Babe}
    ]
2
  1. complex-query.goという名前のファイルを作成します。

  2. コード例をコピーして、 complex-query.goファイルに貼り付けます。

    $search には、さまざまなタイプのクエリを作成するための演算子がいくつか用意されています。次のコード例では、複合演算子を使用して複数の演算子を 1 つのクエリに結合します。これには次の検索条件があります。

    • plot フィールドには Hawaii または Alaska のいずれかが含まれている必要があります。

    • plot フィールドには、年などの 4 桁の数字が含まれている必要があります。

    • genres フィールドには ComedyRomance も含めることはできません。

    • title フィールドには BeachSnow も含めることはできません。

    1package main
    2import (
    3 "context"
    4 "fmt"
    5 "time"
    6
    7 "go.mongodb.org/mongo-driver/bson"
    8 "go.mongodb.org/mongo-driver/mongo"
    9 "go.mongodb.org/mongo-driver/mongo/options"
    10)
    11// define structure of movies collection
    12type MovieCollection struct {
    13 title string `bson:"Title,omitempty"`
    14 plot []string `bson:"Plot,omitempty"`
    15}
    16func main() {
    17 var err error
    18 // connect to the Atlas cluster
    19 ctx := context.Background()
    20 client, err := mongo.Connect(ctx, options.Client().ApplyURI("<connection-string>"))
    21 if err != nil {
    22 panic(err)
    23 }
    24 defer client.Disconnect(ctx)
    25 // set namespace
    26 collection := client.Database("sample_mflix").Collection("movies")
    27 // define pipeline
    28 searchStage := bson.D{{"$search", bson.M{
    29 "compound": bson.M{
    30 "must": bson.A{
    31 bson.M{
    32 "text": bson.D{
    33 {"path", "plot"},{"query", []string{"Hawaii", "Alaska"}},
    34 },
    35 },
    36 bson.M{
    37 "regex": bson.M{
    38 "path": "plot","query": "([0-9]{4})","allowAnalyzedField": true,
    39 },
    40 },
    41 },
    42 "mustNot": bson.A{
    43 bson.D{
    44 {"text", bson.M{
    45 "path": "genres","query": []string{"Comedy", "Romance"},
    46 }},
    47 {"text", bson.M{
    48 "path": "title","query": []string{"Beach", "Snow"},
    49 }},
    50 },
    51 },
    52 },
    53 }}}
    54 projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"plot", 1}, {"genres", 1}, {"_id", 0}}}}
    55 // specify the amount of time the operation can run on the server
    56 opts := options.Aggregate().SetMaxTime(5 * time.Second)
    57 // run pipeline
    58 cursor, err := collection.Aggregate(ctx, mongo.Pipeline{searchStage, projectStage}, opts)
    59 if err != nil {
    60 panic(err)
    61 }
    62 // print results
    63 var results []bson.D
    64 if err = cursor.All(context.TODO(), &results); err != nil {
    65 panic(err)
    66 }
    67 for _, result := range results {
    68 fmt.Println(result)
    69 }
    70}
  3. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  4. 次のコマンドを実行して、コレクションをクエリします。

    go run complex-query.go
    [
    {plot A modern aircraft carrier is thrown back in time to 1941 near Hawaii, just hours before the Japanese attack on Pearl Harbor.}
    {genres [Action Sci-Fi]}
    {title The Final Countdown}
    ]
    [
    {plot Follows John McCain's 2008 presidential campaign, from his selection of Alaska Governor Sarah Palin as his running mate to their ultimate defeat in the general election.}
    {genres [Biography Drama History]}
    {title Game Change}
    ]
    [
    {plot A devastating and heartrending take on grizzly bear activists Timothy Treadwell and Amie Huguenard, who were killed in October of 2003 while living among grizzlies in Alaska.}
    {genres [Documentary Biography]}
    {title Grizzly Man}
    ]
    [
    {plot Truman Korovin is a lonely, sharp-witted cab driver in Fairbanks, Alaska, 1980. The usual routine of picking up fares and spending his nights at his favorite bar, the Boatel, is disrupted ...}
    {genres [Drama]}
    {title Chronic Town}
    ]
1

junit

4.11以降のバージョン

mongodb-driver-sync

4.3.0以降のバージョン

slf4j-log4j12

1.7.30以降のバージョン

2
  1. SimpleQuery.javaという名前のファイルを作成します。

  2. 次のコードをコピーして、 SimpleQuery.javaファイルに貼り付けます。

    このコード例では、次のタスクを実行します。

    • mongodb パッケージと依存関係をインポートします。

    • Atlas クラスターへの接続を確立します。

    • plot フィールドで baseball という単語を検索します。これには以下が含まれます。

      • 出力を5の結果に制限する$limitステージ

      • $project ステージでは、titleplotを除くすべてのフィールドを除外します。

    • カーソルを反復処理して、クエリに一致するドキュメントを出力します。

    1import java.util.Arrays;
    2import static com.mongodb.client.model.Filters.eq;
    3import static com.mongodb.client.model.Aggregates.limit;
    4import static com.mongodb.client.model.Aggregates.project;
    5import static com.mongodb.client.model.Projections.excludeId;
    6import static com.mongodb.client.model.Projections.fields;
    7import static com.mongodb.client.model.Projections.include;
    8import com.mongodb.client.MongoClient;
    9import com.mongodb.client.MongoClients;
    10import com.mongodb.client.MongoCollection;
    11import com.mongodb.client.MongoDatabase;
    12import org.bson.Document;
    13
    14public class SimpleQuery {
    15 public static void main( String[] args ) {
    16 Document agg = new Document("query", "baseball").append("path","plot");
    17
    18 String uri = "<connection-string>";
    19
    20 try (MongoClient mongoClient = MongoClients.create(uri)) {
    21 MongoDatabase database = mongoClient.getDatabase("sample_mflix");
    22 MongoCollection<Document> collection = database.getCollection("movies");
    23
    24 collection.aggregate(Arrays.asList(
    25 eq("$search", eq("text", agg)),
    26 limit(5),
    27 project(fields(excludeId(), include("title", "plot"))))
    28 ).forEach(doc -> System.out.println(doc.toJson()));
    29 }
    30 }
    31}
  3. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  4. SimpleQuery.javaファイルをコンパイルして実行します。

    javac SimpleQuery.java
    java SimpleQuery
    {
    "plot": "A trio of guys try and make up for missed opportunities in childhood by forming a three-player baseball team to compete against standard children baseball squads.",
    "title": "The Benchwarmers"
    }
    {
    "plot": "A young boy is bequeathed the ownership of a professional baseball team.",
    "title": "Little Big League"
    }
    {
    "plot": "A trained chimpanzee plays third base for a minor-league baseball team.",
    "title": "Ed"
    }
    {
    "plot": "The story of the life and career of the famed baseball player, Lou Gehrig.",
    "title": "The Pride of the Yankees"
    }
    {
    "plot": "Babe Ruth becomes a baseball legend but is unheroic to those who know him.",
    "title": "The Babe"
    }
3
  1. ComplexQuery.javaという名前のファイルを作成します。

  2. 次のコードをコピーして、 ComplexQuery.javaファイルに貼り付けます。

    $search には、さまざまなタイプのクエリを作成するための演算子がいくつか用意されています。次のコード例では、複合演算子を使用して複数の演算子を 1 つのクエリに結合します。これには次の検索条件があります。

    • plot フィールドには Hawaii または Alaska のいずれかが含まれている必要があります。

    • plot フィールドには、年などの 4 桁の数字が含まれている必要があります。

    • genres フィールドには ComedyRomance も含めることはできません。

    • title フィールドには BeachSnow も含めることはできません。

    1import java.util.Arrays;
    2import static com.mongodb.client.model.Filters.eq;
    3import static com.mongodb.client.model.Aggregates.project;
    4import static com.mongodb.client.model.Projections.excludeId;
    5import static com.mongodb.client.model.Projections.fields;
    6import static com.mongodb.client.model.Projections.include;
    7import com.mongodb.client.MongoClient;
    8import com.mongodb.client.MongoClients;
    9import com.mongodb.client.MongoCollection;
    10import com.mongodb.client.MongoDatabase;
    11import org.bson.Document;
    12
    13public class ComplexQuery {
    14 public static void main( String[] args ) {
    15 Document agg = new Document("must", Arrays.asList(
    16 new Document("text", new Document("query", Arrays.asList("Hawaii", "Alaska")).append("path", "plot")),
    17 new Document("regex", new Document("query", "([0-9]{4})").append("path", "plot").append("allowAnalyzedField", true))))
    18 .append("mustNot", Arrays.asList(
    19 new Document("text", new Document("query", Arrays.asList("Comedy", "Romance")).append("path", "genres")),
    20 new Document("text", new Document("query", Arrays.asList("Beach", "Snow")).append("path", "title"))));
    21
    22 String uri = "<connection-string>";
    23
    24 try (MongoClient mongoClient = MongoClients.create(uri)) {
    25 MongoDatabase database = mongoClient.getDatabase("sample_mflix");
    26 MongoCollection<Document> collection = database.getCollection("movies");
    27
    28 collection.aggregate(Arrays.asList(
    29 eq("$search", eq("compound", agg)),
    30 project(fields(excludeId(), include("title", "plot", "genres"))))
    31 ).forEach(doc -> System.out.println(doc.toJson()));
    32 }
    33 }
    34}
  3. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  4. ComplexQuery.javaファイルをコンパイルして実行します。

    javac ComplexQuery.java
    java ComplexQuery
    {
    "plot": "A modern aircraft carrier is thrown back in time to 1941 near Hawaii, just hours before the Japanese attack on Pearl Harbor.",
    "genres": ["Action", "Sci-Fi"],
    "title": "The Final Countdown"
    }
    {
    "plot": "Follows John McCain's 2008 presidential campaign, from his selection of Alaska Governor Sarah Palin as his running mate to their ultimate defeat in the general election.",
    "genres": ["Biography", "Drama", "History"],
    "title": "Game Change"
    }
    {
    "plot": "A devastating and heartrending take on grizzly bear activists Timothy Treadwell and Amie Huguenard, who were killed in October of 2003 while living among grizzlies in Alaska.",
    "genres": ["Documentary", "Biography"],
    "title": "Grizzly Man"
    }
    {
    "plot": "Truman Korovin is a lonely, sharp-witted cab driver in Fairbanks, Alaska, 1980. The usual routine of picking up fares and spending his nights at his favorite bar, the Boatel, is disrupted ...",
    "genres": ["Drama"],
    "title": "Chronic Town"
    }
1

mongodb-driver-kotlin-coroutine

4.10.0以降のバージョン

2
  1. SimpleQuery.ktという名前のファイルを作成します。

  2. 次のコードをコピーして、 SimpleQuery.ktファイルに貼り付けます。

    このコード例では、次のタスクを実行します。

    • mongodb パッケージと依存関係をインポートします。

    • Atlas クラスターへの接続を確立します。

    • plot フィールドで baseball という単語を検索します。これには以下が含まれます。

      • 出力を5の結果に制限する$limitステージ

      • $project ステージでは、titleplotを除くすべてのフィールドを除外します。

    • クエリに一致するドキュメントをAggregateFlowインスタンスから出力します。

    1import com.mongodb.client.model.Aggregates.limit
    2import com.mongodb.client.model.Aggregates.project
    3import com.mongodb.client.model.Filters.eq
    4import com.mongodb.client.model.Projections.*
    5import com.mongodb.kotlin.client.coroutine.MongoClient
    6import kotlinx.coroutines.runBlocking
    7import org.bson.Document
    8
    9fun main() {
    10 // establish connection and set namespace
    11 val uri = "<connection-string>"
    12 val mongoClient = MongoClient.create(uri)
    13 val database = mongoClient.getDatabase("sample_mflix")
    14 val collection = database.getCollection<Document>("movies")
    15
    16 runBlocking {
    17 // define query
    18 val agg = Document("query", "baseball").append("path","plot")
    19
    20 // run query and print results
    21 val resultsFlow = collection.aggregate<Document>(
    22 listOf(
    23 eq("\$search", eq("text", agg)),
    24 limit(5),
    25 project(fields(excludeId(), include("title", "plot")))
    26 )
    27 )
    28 resultsFlow.collect { println(it) }
    29 }
    30 mongoClient.close()
    31}
  3. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  4. SimpleQuery.ktファイルを実行します。

    IDE でSimpleQuery.ktプログラムを実行すると、次のドキュメントが出力されます。

    Document{{plot=A trio of guys try and make up for missed opportunities in childhood by forming a three-player baseball team to compete against standard children baseball squads., title=The Benchwarmers}}
    Document{{plot=A young boy is bequeathed the ownership of a professional baseball team., title=Little Big League}}
    Document{{plot=A trained chimpanzee plays third base for a minor-league baseball team., title=Ed}}
    Document{{plot=Babe Ruth becomes a baseball legend but is unheroic to those who know him., title=The Babe}}
    Document{{plot=The story of the life and career of the famed baseball player, Lou Gehrig., title=The Pride of the Yankees}}
3
  1. ComplexQuery.ktという名前のファイルを作成します。

  2. 次のコードをコピーして、 ComplexQuery.ktファイルに貼り付けます。

    $search には、さまざまなタイプのクエリを作成するための演算子がいくつか用意されています。次のコード例では、複合演算子を使用して複数の演算子を 1 つのクエリに結合します。これには次の検索条件があります。

    • plot フィールドには Hawaii または Alaska のいずれかが含まれている必要があります。

    • plot フィールドには、年などの 4 桁の数字が含まれている必要があります。

    • genres フィールドには ComedyRomance も含めることはできません。

    • title フィールドには BeachSnow も含めることはできません。

    1import com.mongodb.client.model.Aggregates.limit
    2import com.mongodb.client.model.Aggregates.project
    3import com.mongodb.client.model.Filters.eq
    4import com.mongodb.client.model.Projections.*
    5import com.mongodb.kotlin.client.coroutine.MongoClient
    6import kotlinx.coroutines.runBlocking
    7import org.bson.Document
    8
    9fun main() {
    10 // establish connection and set namespace
    11 val uri = "<connection-string>"
    12 val mongoClient = MongoClient.create(uri)
    13 val database = mongoClient.getDatabase("sample_mflix")
    14 val collection = database.getCollection<Document>("movies")
    15
    16 runBlocking {
    17 // define query
    18 val agg = Document(
    19 "must", listOf(
    20 Document("text", Document("query", listOf("Hawaii", "Alaska"))
    21 .append("path", "plot")),
    22 Document(
    23 "regex",
    24 Document("query", "([0-9]{4})")
    25 .append("path", "plot")
    26 .append("allowAnalyzedField", true)
    27 )
    28 )
    29 )
    30 .append(
    31 "mustNot", listOf(
    32 Document("text", Document("query", listOf("Comedy", "Romance"))
    33 .append("path", "genres")),
    34 Document("text", Document("query", listOf("Beach", "Snow"))
    35 .append("path", "title"))
    36 )
    37 )
    38
    39 // run query and print results
    40 val resultsFlow = collection.aggregate<Document>(
    41 listOf(
    42 eq("\$search", eq("compound", agg)),
    43 project(fields(
    44 excludeId(),
    45 include("title", "plot", "genres")
    46 ))
    47 )
    48 )
    49 resultsFlow.collect { println(it) }
    50 }
    51 mongoClient.close()
    52}
  3. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  4. ComplexQuery.ktファイルを実行します。

    IDE でComplexQuery.ktプログラムを実行すると、次のドキュメントが出力されます。

    Document{{plot=A modern aircraft carrier is thrown back in time to 1941 near Hawaii, just hours before the Japanese attack on Pearl Harbor., genres=[Action, Sci-Fi], title=The Final Countdown}}
    Document{{plot=Follows John McCain's 2008 presidential campaign, from his selection of Alaska Governor Sarah Palin as his running mate to their ultimate defeat in the general election., genres=[Biography, Drama, History], title=Game Change}}
    Document{{plot=A devastating and heartrending take on grizzly bear activists Timothy Treadwell and Amie Huguenard, who were killed in October of 2003 while living among grizzlies in Alaska., genres=[Documentary, Biography], title=Grizzly Man}}
    Document{{plot=Truman Korovin is a lonely, sharp-witted cab driver in Fairbanks, Alaska, 1980. The usual routine of picking up fares and spending his nights at his favorite bar, the Boatel, is disrupted ..., genres=[Drama], title=Chronic Town}}
1
  1. simple-query.jsという名前のファイルを作成します。

  2. コード例をコピーして、 simple-query.jsファイルに貼り付けます。

    このコード例では、次のタスクを実行します。

    • MongoDB の Node.js ドライバーであるmongodbをインポートします。

    • Atlas クラスターへの接続を確立するためのMongoClientクラスのインスタンスを作成します。

    • plot フィールドで baseball という単語を検索します。出力を 5 件の結果に制限する $limit ステージと、titleplot を除くすべてのフィールドを除外する $project ステージが含まれています。

    • カーソルを反復処理して、クエリに一致するドキュメントを出力します。

    1const MongoClient = require("mongodb").MongoClient;
    2const assert = require("assert");
    3
    4const agg = [
    5 {
    6 $search: {
    7 text: {
    8 query: "baseball",
    9 path: "plot",
    10 },
    11 },
    12 },
    13 {
    14 $limit: 5,
    15 },
    16 {
    17 $project: {
    18 _id: 0,
    19 title: 1,
    20 plot: 1,
    21 },
    22 },
    23];
    24
    25MongoClient.connect(
    26 "<connection-string>",
    27 { useNewUrlParser: true, useUnifiedTopology: true },
    28 async function (connectErr, client) {
    29 assert.equal(null, connectErr);
    30 const coll = client.db("sample_mflix").collection("movies");
    31 let cursor = await coll.aggregate(agg);
    32 await cursor.forEach((doc) => console.log(doc));
    33 client.close();
    34 }
    35);
  3. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  4. 次のコマンドを実行して、コレクションをクエリします。

    node simple-query.js
    {
    plot: 'A trio of guys try and make up for missed opportunities in childhood by forming a three-player baseball team to compete against standard children baseball squads.',
    title: 'The Benchwarmers'
    }
    {
    plot: 'A young boy is bequeathed the ownership of a professional baseball team.',
    title: 'Little Big League'
    }
    {
    plot: 'A trained chimpanzee plays third base for a minor-league baseball team.',
    title: 'Ed'
    }
    {
    plot: 'The story of the life and career of the famed baseball player, Lou Gehrig.',
    title: 'The Pride of the Yankees'
    }
    {
    plot: 'Babe Ruth becomes a baseball legend but is unheroic to those who know him.',
    title: 'The Babe'
    }
2
  1. complex-query.jsという名前のファイルを作成します。

  2. コード例をコピーして、 complex-query.jsファイルに貼り付けます。

    $search には、さまざまなタイプのクエリを作成するための演算子がいくつか用意されています。次のコード例では、複合演算子を使用して複数の演算子を 1 つのクエリに結合します。これには次の検索条件があります。

    • plot フィールドには Hawaii または Alaska のいずれかが含まれている必要があります。

    • plot フィールドには、年などの 4 桁の数字が含まれている必要があります。

    • genres フィールドには ComedyRomance も含めることはできません。

    • title フィールドには BeachSnow も含めることはできません。

    1const MongoClient = require("mongodb").MongoClient;
    2const assert = require("assert");
    3
    4const agg = [
    5 {
    6 $search: {
    7 compound: {
    8 must: [
    9 {
    10 text: {
    11 query: ["Hawaii", "Alaska"],
    12 path: "plot",
    13 },
    14 },
    15 {
    16 regex: {
    17 query: "([0-9]{4})",
    18 path: "plot",
    19 allowAnalyzedField: true,
    20 },
    21 },
    22 ],
    23 mustNot: [
    24 {
    25 text: {
    26 query: ["Comedy", "Romance"],
    27 path: "genres",
    28 },
    29 },
    30 {
    31 text: {
    32 query: ["Beach", "Snow"],
    33 path: "title",
    34 },
    35 },
    36 ],
    37 },
    38 },
    39 },
    40 {
    41 $project: {
    42 title: 1,
    43 plot: 1,
    44 genres: 1,
    45 _id: 0,
    46 },
    47 },
    48];
    49
    50MongoClient.connect(
    51 "<connection-string>",
    52 { useNewUrlParser: true, useUnifiedTopology: true },
    53 async function (connectErr, client) {
    54 assert.equal(null, connectErr);
    55 const coll = client.db("sample_mflix").collection("movies");
    56 let cursor = await coll.aggregate(agg);
    57 await cursor.forEach((doc) => console.log(doc));
    58 client.close();
    59 }
    60);
  3. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。

  4. 次のコマンドを実行して、コレクションをクエリします。

    node complex-query.js
    {
    plot: 'A modern aircraft carrier is thrown back in time to 1941 near Hawaii, just hours before the Japanese attack on Pearl Harbor.',
    genres: [ 'Action', 'Sci-Fi' ],
    title: 'The Final Countdown'
    }
    {
    plot: "Follows John McCain's 2008 presidential campaign, from his selection of Alaska Governor Sarah Palin as his running mate to their ultimate defeat in the general election.",
    genres: [ 'Biography', 'Drama', 'History' ],
    title: 'Game Change'
    }
    {
    plot: 'A devastating and heartrending take on grizzly bear activists Timothy Treadwell and Amie Huguenard, who were killed in October of 2003 while living among grizzlies in Alaska.',
    genres: [ 'Documentary', 'Biography' ],
    title: 'Grizzly Man'
    }
    {
    plot: 'Truman Korovin is a lonely, sharp-witted cab driver in Fairbanks, Alaska, 1980. The usual routine of picking up fares and spending his nights at his favorite bar, the Boatel, is disrupted ...',
    genres: [ 'Drama' ],
    title: 'Chronic Town'
    }
1
  1. simple-query.pyという名前のファイルを作成します。

  2. コード例をコピーして、 simple-query.pyファイルに貼り付けます。

    次のコード例では、次を行います。

    • pymongo、MongoDB の Python ドライバー、およびDNSシード リスト接続文字列を使用してpymongoAtlas に接続するために必要なdns モジュールをインポートします。

    • Atlas クラスターへの接続を確立するためのMongoClientクラスのインスタンスを作成します。

    • plot フィールドで baseball という単語を検索します。出力を 5 件の結果に制限する $limit ステージと、titleplot を除くすべてのフィールドを除外する $project ステージが含まれています。

    • カーソルを反復処理して、クエリに一致するドキュメントを出力します。

    1import pymongo
    2import dns
    3
    4client = pymongo.MongoClient('<connection-string>')
    5result = client['sample_mflix']['movies'].aggregate([
    6 {
    7 '$search': {
    8 'index': 'default',
    9 'text': {
    10 'query': 'baseball',
    11 'path': 'plot'
    12 }
    13 }
    14 }, {
    15 '$limit': 5
    16 }, {
    17 '$project': {
    18 '_id': 0,
    19 'title': 1,
    20 'plot': 1
    21 }
    22 }
    23])
    24
    25for i in result:
    26 print(i)
  3. サンプルを実行する前に、<connection-string> をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。

  4. 次のコマンドを実行して、コレクションをクエリします。

    python simple-query.py
    {'plot': 'A trio of guys try and make up for missed opportunities in childhood by forming a three-player baseball team to compete against standard children baseball squads.', 'title': 'The Benchwarmers'}
    {'plot': 'A young boy is bequeathed the ownership of a professional baseball team.', 'title': 'Little Big League'}
    {'plot': 'A trained chimpanzee plays third base for a minor-league baseball team.', 'title': 'Ed'}
    {'plot': 'The story of the life and career of the famed baseball player, Lou Gehrig.', 'title': 'The Pride of the Yankees'}
    {'plot': 'Babe Ruth becomes a baseball legend but is unheroic to those who know him.', 'title': 'The Babe'}
2
  1. complex-query.pyという名前のファイルを作成します。

  2. コード例をコピーして、 complex-query.pyファイルに貼り付けます。

    $search には、さまざまなタイプのクエリを作成するための演算子がいくつか用意されています。次のクエリでは、複合演算子を使用して複数の演算子を 1 つのクエリに結合します。これには次の検索条件があります。

    • plot フィールドには Hawaii または Alaska のいずれかが含まれている必要があります。

    • plot フィールドには、年などの 4 桁の数字が含まれている必要があります。

    • genres フィールドには ComedyRomance も含めることはできません。

    • title フィールドには BeachSnow も含めることはできません。

    1import pymongo
    2import dns
    3
    4client = pymongo.MongoClient('<connection-string>')
    5result = client['sample_mflix']['movies'].aggregate([
    6 {
    7 '$search': {
    8 'compound': {
    9 'must': [
    10 {
    11 'text': {
    12 'query': [
    13 'Hawaii', 'Alaska'
    14 ],
    15 'path': 'plot'
    16 }
    17 }, {
    18 'regex': {
    19 'query': '([0-9]{4})',
    20 'path': 'plot',
    21 'allowAnalyzedField': True
    22 }
    23 }
    24 ],
    25 'mustNot': [
    26 {
    27 'text': {
    28 'query': [
    29 'Comedy', 'Romance'
    30 ],
    31 'path': 'genres'
    32 }
    33 }, {
    34 'text': {
    35 'query': [
    36 'Beach', 'Snow'
    37 ],
    38 'path': 'title'
    39 }
    40 }
    41 ]
    42 }
    43 }
    44 }, {
    45 '$project': {
    46 'title': 1,
    47 'plot': 1,
    48 'genres': 1,
    49 '_id': 0
    50 }
    51 }
    52])
    53
    54for i in result:
    55 print(i)
  3. 次のコマンドを実行して、コレクションをクエリします。

    python complex-query.py
    {'plot': 'A modern aircraft carrier is thrown back in time to 1941 near Hawaii, just hours before the Japanese attack on Pearl Harbor.', 'genres': ['Action', 'Sci-Fi'], 'title': 'The Final Countdown'}
    {'plot': "Follows John McCain's 2008 presidential campaign, from his selection of Alaska Governor Sarah Palin as his running mate to their ultimate defeat in the general election.", 'genres': ['Biography', 'Drama', 'History'], 'title': 'Game Change'}
    {'plot': 'A devastating and heartrending take on grizzly bear activists Timothy Treadwell and Amie Huguenard, who were killed in October of 2003 while living among grizzlies in Alaska.', 'genres': ['Documentary', 'Biography'], 'title': 'Grizzly Man'}
    {'plot': 'Truman Korovin is a lonely, sharp-witted cab driver in Fairbanks, Alaska, 1980. The usual routine of picking up fares and spending his nights at his favorite bar, the Boatel, is disrupted ...', 'genres': ['Drama'], 'title': 'Chronic Town'}

いくつかのクエリを実行したので、Atlas Search のドキュメントを確認して、実行できるさまざまな演算子やその他のクエリについて詳しく学習しましょう。他にもクエリ例は、Atlas Search ドキュメントに紹介されています。

ビデオで学びたい場合

このビデオ チュートリアルでは、Restaurant Finder デモ アプリケーション用の Atlas 検索クエリを作成する方法について紹介します。このアプリケーションは www.atlassearchrestaurants.com でも入手できます。

所要時間: 20 分

戻る

1: 検索インデックスを作成する