2단계: Atlas 검색 쿼리 실행
➤ 언어 선택 드롭다운 메뉴를 사용하여 이 페이지에 있는 예시의 언어를 설정합니다.
이 튜토리얼의 이 부분에서는 Atlas Search 쿼리를 실행하는 방법을 안내합니다.
절차
Atlas Clusters 에서 프로젝트 의 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.
아직 표시되지 않은 경우 사이드바에서 Clusters 을(를) 클릭합니다.
클러스터 페이지가 표시됩니다.
클러스터의 Atlas Search 페이지로 이동합니다.
사이드바, Data Explorer 또는 클러스터 세부 정보 페이지에서 Atlas Search 페이지로 이동할 수 있습니다.
사이드바에서 Services 제목 아래의 Atlas Search를 클릭합니다.
Select data source 드롭다운에서 클러스터를 선택하고 Go to Atlas Search를 클릭합니다.
Atlas Search 페이지가 표시됩니다.
cluster의 Browse Collections 버튼을 클릭합니다.
데이터베이스를 확장하고 컬렉션을 선택합니다.
컬렉션의 Search Indexes 탭을 클릭합니다.
Atlas Search 페이지가 표시됩니다.
클러스터 이름을 클릭합니다.
Atlas Search 탭을 클릭합니다.
Atlas Search 페이지가 표시됩니다.
Run a simple Atlas Search query on the movies
collection.
다음 쿼리를 복사하여 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 매뉴얼을 참조하세요.
쿼리 결과를 확장합니다.
Search Tester는 반환하는 문서의 모든 필드를 표시하지 않을 수 있습니다. 쿼리 경로에 지정한 필드를 비롯하여 모든 필드를 보려면 결과에서 문서를 펼칩니다.
에서 클러스터 mongosh
에 연결합니다.
터미널 창에서 mongosh
를 열고 클러스터에 연결합니다. 연결에 대한 자세한 지침은 mongosh
를 통한 연결을 참조하세요.
sample_mflix
데이터베이스 를 사용합니다.
mongosh
프롬프트에서 다음 명령을 실행합니다.
use sample_mflix
컬렉션 에서 간단한 Atlas Search 쿼리 를 movies
실행합니다.
다음 쿼리는 plot
필드에서 baseball
이라는 단어를 검색합니다. 여기에는 출력을 5개의 결과로 제한하는 $limit 단계와 title
및 plot
을 제외한 모든 필드를 제외하는 $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 서버 매뉴얼을 참조하시기 바랍니다.
Run a complex Atlas Search query on the movies
collection.
$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" }
MongoDB Compass에서 cluster에 연결합니다.
MongoDB Compass를 열고 cluster에 연결합니다. 연결에 대한 자세한 내용은 Compass를 통한 연결을 참조하세요.
컬렉션 에서 간단한 Atlas Search 쿼리 를 movies
실행합니다.
다음 쿼리는 plot
필드에서 baseball
이라는 단어를 검색합니다. 여기에는 출력을 5개의 결과로 제한하는 $limit 단계와 title
및 plot
을 제외한 모든 필드를 제외하는 $project 단계가 포함되어 있습니다.
MongoDB Compass에서 이 간단한 Atlas Search 쿼리를 실행하려면 다음을 수행합니다.
Aggregations 탭을 클릭합니다.
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 서버 매뉴얼을 참조하시기 바랍니다.
Run a complex Atlas Search query on the movies
collection.
$search
에는 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 다음 쿼리는 compound 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.
plot
필드에는Hawaii
또는Alaska
가 포함되어야 합니다.plot
필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.genres
필드에는Comedy
또는Romance
가 포함되어서는 안 됩니다.title
필드에는Beach
또는Snow
가 포함되어서는 안 됩니다.
MongoDB Compass에서 이 복잡한 Atlas Search 쿼리를 실행 하려면 다음을 수행합니다.
Aggregations 탭을 클릭합니다.
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" }
컬렉션 에서 간단한 Atlas Search 쿼리 를 movies
실행합니다.
simple-query-example
라는 새 디렉토리를 만들고dotnet new
명령으로 프로젝트를 초기화합니다.mkdir simple-query-example cd simple-query-example dotnet new console .NET/C# 드라이버를 프로젝트에 종속성으로 추가합니다.
dotnet add package MongoDB.Driver Program.cs
파일의 내용을 다음 코드로 바꿉니다.이 코드 예시에서는 다음 작업을 수행합니다:
mongodb
패키지 및 종속성을 가져옵니다.Atlas 클러스터에 대한 연결을 설정합니다.
plot
필드에서baseball
이라는 단어를 검색합니다. 여기에는 다음이 포함됩니다:커서 위를 반복하여 쿼리와 일치하는 문서를 인쇄합니다.
1 using MongoDB.Bson; 2 using MongoDB.Bson.Serialization.Attributes; 3 using MongoDB.Bson.Serialization.Conventions; 4 using MongoDB.Driver; 5 using MongoDB.Driver.Search; 6 7 public 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 [ ]41 public class MovieDocument 42 { 43 [ ]44 public ObjectId Id { get; set; } 45 public string Plot { get; set; } 46 public string Title { get; set; } 47 } 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.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" }
Run a complex Atlas Search query on the movies
collection.
complex-query-example
라는 새 디렉터리를 만들고 dotnet new 명령으로 프로젝트를 초기화합니다.mkdir complex-query-example cd complex-query-example dotnet new console .NET/C# 드라이버를 프로젝트에 종속성으로 추가합니다.
dotnet add package MongoDB.Driver Program.cs
파일의 내용을 다음 코드로 바꿉니다.$search
다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.plot
필드에는Hawaii
또는Alaska
가 포함되어야 합니다.plot
필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.genres
필드에는Comedy
또는Romance
가 포함되어서는 안 됩니다.title
필드에는Beach
또는Snow
가 포함되어서는 안 됩니다.
1 using MongoDB.Bson; 2 using MongoDB.Bson.Serialization.Attributes; 3 using MongoDB.Bson.Serialization.Conventions; 4 using MongoDB.Driver; 5 using MongoDB.Driver.Search; 6 7 public 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 [ ]50 public class MovieDocument 51 { 52 [ ]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 } 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.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" }
컬렉션 에서 간단한 Atlas Search 쿼리 를 movies
실행합니다.
simple-query.go
이라는 파일을 만듭니다.코드 예시를 복사하여
simple-query.go
파일에 붙여넣습니다.이 코드 예시에서는 다음 작업을 수행합니다:
mongodb
패키지 및 종속성을 가져옵니다.Atlas 클러스터에 대한 연결을 설정합니다.
plot
필드에서baseball
이라는 단어를 검색합니다. 다음 단계가 포함됩니다.커서 위를 반복하여 쿼리와 일치하는 문서를 인쇄합니다.
1 package main 2 import ( 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 12 type MovieCollection struct { 13 title string `bson:"Title,omitempty"` 14 plot string `bson:"Plot,omitempty"` 15 } 16 func 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 } 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.다음 명령을 실행하여 컬렉션을 쿼리합니다.
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} ]
Run a complex Atlas Search query on the movies
collection.
complex-query.go
이라는 파일을 만듭니다.코드 예시를 복사하여
complex-query.go
파일에 붙여넣습니다.$search
다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.plot
필드에는Hawaii
또는Alaska
가 포함되어야 합니다.plot
필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.genres
필드에는Comedy
또는Romance
가 포함되어서는 안 됩니다.title
필드에는Beach
또는Snow
가 포함되어서는 안 됩니다.
1 package main 2 import ( 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 12 type MovieCollection struct { 13 title string `bson:"Title,omitempty"` 14 plot []string `bson:"Plot,omitempty"` 15 } 16 func 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 } 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.다음 명령을 실행하여 컬렉션을 쿼리합니다.
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} ]
컬렉션 에서 간단한 Atlas Search 쿼리 를 movies
실행합니다.
SimpleQuery.java
이라는 파일을 만듭니다.다음 코드를 복사하여
SimpleQuery.java
파일에 붙여넣습니다.이 코드 예시에서는 다음 작업을 수행합니다:
mongodb
패키지 및 종속성을 가져옵니다.Atlas 클러스터에 대한 연결을 설정합니다.
plot
필드에서baseball
이라는 단어를 검색합니다. 여기에는 다음이 포함됩니다:커서 위를 반복하여 쿼리와 일치하는 문서를 인쇄합니다.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.limit; 4 import static com.mongodb.client.model.Aggregates.project; 5 import static com.mongodb.client.model.Projections.excludeId; 6 import static com.mongodb.client.model.Projections.fields; 7 import static com.mongodb.client.model.Projections.include; 8 import com.mongodb.client.MongoClient; 9 import com.mongodb.client.MongoClients; 10 import com.mongodb.client.MongoCollection; 11 import com.mongodb.client.MongoDatabase; 12 import org.bson.Document; 13 14 public 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 } 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.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" }
Run a complex Atlas Search query on the movies
collection.
ComplexQuery.java
이라는 파일을 만듭니다.다음 코드를 복사하여
ComplexQuery.java
파일에 붙여넣습니다.$search
다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.plot
필드에는Hawaii
또는Alaska
가 포함되어야 합니다.plot
필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.genres
필드에는Comedy
또는Romance
가 포함되어서는 안 됩니다.title
필드에는Beach
또는Snow
가 포함되어서는 안 됩니다.
1 import java.util.Arrays; 2 import static com.mongodb.client.model.Filters.eq; 3 import static com.mongodb.client.model.Aggregates.project; 4 import static com.mongodb.client.model.Projections.excludeId; 5 import static com.mongodb.client.model.Projections.fields; 6 import static com.mongodb.client.model.Projections.include; 7 import com.mongodb.client.MongoClient; 8 import com.mongodb.client.MongoClients; 9 import com.mongodb.client.MongoCollection; 10 import com.mongodb.client.MongoDatabase; 11 import org.bson.Document; 12 13 public 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 } 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.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" }
컬렉션 에서 간단한 Atlas Search 쿼리 를 movies
실행합니다.
SimpleQuery.kt
이라는 파일을 만듭니다.다음 코드를 복사하여
SimpleQuery.kt
파일에 붙여넣습니다.이 코드 예시에서는 다음 작업을 수행합니다:
mongodb
패키지 및 종속성을 가져옵니다.Atlas 클러스터에 대한 연결을 설정합니다.
plot
필드에서baseball
이라는 단어를 검색합니다. 여기에는 다음이 포함됩니다:AggregateFlow
인스턴스에서 쿼리와 일치하는 문서를 인쇄합니다.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Filters.eq 4 import com.mongodb.client.model.Projections.* 5 import com.mongodb.kotlin.client.coroutine.MongoClient 6 import kotlinx.coroutines.runBlocking 7 import org.bson.Document 8 9 fun 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 } 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.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}}
Run a complex Atlas Search query on the movies
collection.
ComplexQuery.kt
이라는 파일을 만듭니다.다음 코드를 복사하여
ComplexQuery.kt
파일에 붙여넣습니다.$search
다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.plot
필드에는Hawaii
또는Alaska
가 포함되어야 합니다.plot
필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.genres
필드에는Comedy
또는Romance
가 포함되어서는 안 됩니다.title
필드에는Beach
또는Snow
가 포함되어서는 안 됩니다.
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Filters.eq 4 import com.mongodb.client.model.Projections.* 5 import com.mongodb.kotlin.client.coroutine.MongoClient 6 import kotlinx.coroutines.runBlocking 7 import org.bson.Document 8 9 fun 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 } 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.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}}
컬렉션 에서 간단한 Atlas Search 쿼리 를 movies
실행합니다.
simple-query.js
이라는 파일을 만듭니다.코드 예시를 복사하여
simple-query.js
파일에 붙여넣습니다.이 코드 예시에서는 다음 작업을 수행합니다:
MongoDB의 Node.js 드라이버인
mongodb
를 가져옵니다.MongoClient
클래스의 인스턴스를 만들어 Atlas 클러스터에 대한 연결을 설정합니다.plot
필드에서baseball
이라는 단어를 검색합니다. 여기에는 출력을 5개의 결과로 제한하는 $limit 단계와title
및plot
을 제외한 모든 필드를 제외하는 $project 단계가 포함되어 있습니다.커서 위를 반복하여 쿼리와 일치하는 문서를 인쇄합니다.
1 const MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const 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 25 MongoClient.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 ); 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.다음 명령을 실행하여 컬렉션을 쿼리합니다.
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' }
Run a complex Atlas Search query on the movies
collection.
complex-query.js
이라는 파일을 만듭니다.코드 예시를 복사하여
complex-query.js
파일에 붙여넣습니다.$search
다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 이 코드 예시에서는 복합 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.plot
필드에는Hawaii
또는Alaska
가 포함되어야 합니다.plot
필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.genres
필드에는Comedy
또는Romance
가 포함되어서는 안 됩니다.title
필드에는Beach
또는Snow
가 포함되어서는 안 됩니다.
1 const MongoClient = require("mongodb").MongoClient; 2 const assert = require("assert"); 3 4 const 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 50 MongoClient.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 ); 샘플을 실행하기 전에
<connection-string>
을(를) Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다.다음 명령을 실행하여 컬렉션을 쿼리합니다.
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' }
컬렉션 에서 간단한 Atlas Search 쿼리 를 movies
실행합니다.
simple-query.py
이라는 파일을 만듭니다.코드 예시를 복사하여
simple-query.py
파일에 붙여넣습니다.다음 코드 예제에서는:
pymongo
, MongoDB의 Python 드라이버 및dns
모듈을 가져옵니다. 이 모듈은 DNS 시드 리스트 연결 문자열을 사용하여pymongo
를Atlas
에 연결하는 데 필요합니다.MongoClient
클래스의 인스턴스를 만들어 Atlas 클러스터에 대한 연결을 설정합니다.plot
필드에서baseball
이라는 단어를 검색합니다. 여기에는 출력을 5개의 결과로 제한하는 $limit 단계와title
및plot
을 제외한 모든 필드를 제외하는 $project 단계가 포함되어 있습니다.커서 위를 반복하여 쿼리와 일치하는 문서를 인쇄합니다.
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = 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 25 for i in result: 26 print(i) 샘플을 실행하기 전에
<connection-string>
을 Atlas 연결 문자열로 바꿉니다. 연결 문자열에는 데이터베이스 사용자의 자격 증명이 포함되어 있어야 합니다. 자세한 내용은 드라이버를 통한 연결을 참조하세요.다음 명령을 실행하여 컬렉션을 쿼리합니다.
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'}
Run a complex Atlas Search query on the movies
collection.
complex-query.py
이라는 파일을 만듭니다.코드 예시를 복사하여
complex-query.py
파일에 붙여넣습니다.$search
에는 다양한 유형의 쿼리를 구성하기 위한 여러 연산자가 있습니다. 다음 쿼리는 compound 연산자를 사용하여 여러 연산자를 단일 쿼리로 결합합니다. 검색 기준은 다음과 같습니다.plot
필드에는Hawaii
또는Alaska
가 포함되어야 합니다.plot
필드는 연도와 같은 4자리 숫자가 포함되어야 합니다.genres
필드에는Comedy
또는Romance
가 포함되어서는 안 됩니다.title
필드에는Beach
또는Snow
가 포함되어서는 안 됩니다.
1 import pymongo 2 import dns 3 4 client = pymongo.MongoClient('<connection-string>') 5 result = 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 54 for i in result: 55 print(i) 다음 명령을 실행하여 컬렉션을 쿼리합니다.
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분