Docs Menu
Docs Home
/
MongoDB Atlas
/ /

2단계: Atlas 검색 쿼리 실행

이 페이지의 내용

  • 절차
  • 다음 단계

언어 선택 드롭다운 메뉴를 사용하여 이 페이지에 있는 예시의 언어를 설정합니다.


중요

서버리스 인스턴스에서는 사용할 수 없는 기능입니다.

서버리스 인스턴스는 현재 이 기능을 지원하지 않습니다. 자세한 내용은 서버리스 인스턴스 제한 사항을 참조하세요.

이 튜토리얼의 이 부분에서는 Atlas Search 쿼리를 실행하는 방법을 안내합니다.

1
  1. 아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.

  2. 아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.

  3. 아직 표시되지 않은 경우 사이드바에서 Clusters 을(를) 클릭합니다.

    클러스터 페이지가 표시됩니다.

2

사이드바, Data Explorer 또는 클러스터 세부 정보 페이지에서 Atlas Search 페이지로 이동할 수 있습니다.

  1. 사이드바에서 Services 제목 아래의 Atlas Search를 클릭합니다.

  2. Select data source 드롭다운에서 클러스터를 선택하고 Go to Atlas Search를 클릭합니다.

    Atlas Search 페이지가 표시됩니다.

  1. cluster의 Browse Collections 버튼을 클릭합니다.

  2. 데이터베이스를 확장하고 컬렉션을 선택합니다.

  3. 컬렉션의 Search Indexes 탭을 클릭합니다.

    Atlas Search 페이지가 표시됩니다.

  1. 클러스터 이름을 클릭합니다.

  2. Atlas Search 탭을 클릭합니다.

    Atlas Search 페이지가 표시됩니다.

3

쿼리할 인덱스 오른쪽에 있는 Query 버튼을 클릭합니다.

4

Edit Query 을 클릭하면 JSON 형식의 기본 쿼리 구문 샘플을 볼 수 있습니다.

5

다음 쿼리를 복사하여 Query Editor에 붙여 넣은 다음 Query Editor에서 Search 버튼을 클릭합니다.

[
{
$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 서버 매뉴얼을 참조하시기 바랍니다.

4

$search 에는 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 다음 쿼리는 compound 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.

  • plot 필드에는 Hawaii 또는 Alaska가 포함되어야 합니다.

  • plot 필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.

  • genres필드에는 Comedy 또는 Romance가 포함되어서는 안 됩니다.

  • title 필드에는 Beach 또는 Snow가 포함되어서는 안 됩니다.

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를 열고 cluster에 연결합니다. 연결에 대한 자세한 내용은 Compass를 통한 연결을 참조하세요.

2

Database 화면에서 sample_mflix 데이터베이스를 클릭한 다음 movies collection을 클릭합니다.

3

다음 쿼리는 plot 필드에서 baseball이라는 단어를 검색합니다. 여기에는 출력을 5개의 결과로 제한하는 $limit 단계와 titleplot을 제외한 모든 필드를 제외하는 $project 단계가 포함되어 있습니다.

MongoDB Compass에서 이 간단한 Atlas Search 쿼리를 실행하려면 다음을 수행합니다.

  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 서버 매뉴얼을 참조하시기 바랍니다.

4

$search 에는 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 다음 쿼리는 compound 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.

  • plot 필드에는 Hawaii 또는 Alaska가 포함되어야 합니다.

  • plot 필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.

  • genres필드에는 Comedy 또는 Romance가 포함되어서는 안 됩니다.

  • title 필드에는 Beach 또는 Snow가 포함되어서는 안 됩니다.

MongoDB Compass에서 이 복잡한 Atlas Search 쿼리를 실행 하려면 다음을 수행합니다.

  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 이라는 단어를 검색합니다. 여기에는 다음이 포함됩니다:

      • $limit 단계를 사용하여 출력 결과를 5개로 제한합니다.

      • titleplot을 제외한 모든 필드를 제외하기 위한 $project 단계

    • 커서 위를 반복하여 쿼리와 일치하는 문서를 인쇄합니다.

    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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.

    • plot 필드에는 Hawaii 또는 Alaska가 포함되어야 합니다.

    • plot 필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.

    • genres필드에는 Comedy 또는 Romance가 포함되어서는 안 됩니다.

    • title 필드에는 Beach 또는 Snow가 포함되어서는 안 됩니다.

    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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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 이라는 단어를 검색합니다. 다음 단계가 포함됩니다.

      • $limit 단계를 사용하여 출력 결과를 5개로 제한합니다.

      • titleplot을 제외한 모든 필드를 제외하기 위한 $project 단계

    • 커서 위를 반복하여 쿼리와 일치하는 문서를 인쇄합니다.

    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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.

    • plot 필드에는 Hawaii 또는 Alaska가 포함되어야 합니다.

    • plot 필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.

    • genres필드에는 Comedy 또는 Romance가 포함되어서는 안 됩니다.

    • title 필드에는 Beach 또는 Snow가 포함되어서는 안 됩니다.

    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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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 이라는 단어를 검색합니다. 여기에는 다음이 포함됩니다:

      • $limit 단계를 사용하여 출력 결과를 5개로 제한합니다.

      • titleplot을 제외한 모든 필드를 제외하기 위한 $project 단계

    • 커서 위를 반복하여 쿼리와 일치하는 문서를 인쇄합니다.

    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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.

    • plot 필드에는 Hawaii 또는 Alaska가 포함되어야 합니다.

    • plot 필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.

    • genres필드에는 Comedy 또는 Romance가 포함되어서는 안 됩니다.

    • title 필드에는 Beach 또는 Snow가 포함되어서는 안 됩니다.

    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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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 이라는 단어를 검색합니다. 여기에는 다음이 포함됩니다:

      • $limit 단계를 사용하여 출력 결과를 5개로 제한합니다.

      • titleplot을 제외한 모든 필드를 제외하기 위한 $project 단계

    • 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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.

    • plot 필드에는 Hawaii 또는 Alaska가 포함되어야 합니다.

    • plot 필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.

    • genres필드에는 Comedy 또는 Romance가 포함되어서는 안 됩니다.

    • title 필드에는 Beach 또는 Snow가 포함되어서는 안 됩니다.

    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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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를 가져옵니다.

    • MongoClient 클래스의 인스턴스를 만들어 Atlas 클러스터에 대한 연결을 설정합니다.

    • 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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.

    • plot 필드에는 Hawaii 또는 Alaska가 포함되어야 합니다.

    • plot 필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.

    • genres필드에는 Comedy 또는 Romance가 포함되어서는 안 됩니다.

    • title 필드에는 Beach 또는 Snow가 포함되어서는 안 됩니다.

    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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다.

  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 모듈을 가져옵니다. 이 모듈은 DNS 시드 리스트 연결 문자열을 사용하여 pymongoAtlas에 연결하는 데 필요합니다.

    • MongoClient 클래스의 인스턴스를 만들어 Atlas 클러스터에 대한 연결을 설정합니다.

    • 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 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.

  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 에는 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 다음 쿼리는 compound 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.

    • plot 필드에는 Hawaii 또는 Alaska가 포함되어야 합니다.

    • plot 필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.

    • genres필드에는 Comedy 또는 Romance가 포함되어서는 안 됩니다.

    • title 필드에는 Beach 또는 Snow가 포함되어서는 안 됩니다.

    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 문서에서 더 많은 쿼리 예시를 살펴볼 수 있습니다.

보면서 배우는 것을 선호하시나요?

음식점 검색 데모 애플리케이션을 위한 Atlas Search 쿼리를 구축하는 방법을 보여주는 비디오 튜토리얼을 따라해 보세요. 해당 데모는 www.atlassearchrestaurants.com에서도 이용할 수 있습니다.

소요 시간: 20분

돌아가기

1: 검색 인덱스 만들기

이 페이지의 내용