多言語 Atlas 検索クエリの実行方法
このチュートリアルでは、 言語アナライザを使用するインデックスを作成し、 sample_mflix.movies
コレクションに対して多言語検索を実行する方法について説明します。 次の手順が必要です。
sample_mflix.movies
コレクションの 動的マッピング を使用して Atlas Search インデックスを設定します。fullplot
フィールドのインデックス作成には、lucene.italian
言語アナライザまたはlucene.italian
およびlucene.english
言語アナライザを適用できます。 Atlas Search は、コレクション内の動的にインデックスを作成する他のすべてのフィールドに対してデフォルトのlucene.standard
アナライザを使用します。sample_mflix.movies
コレクションのfullplot
、released
、genres
フィールドに対して Atlas Search複合クエリを実行します。
開始する前に、Atlas クラスターが前提条件 に記載されている要件を満たしていることを確認してください。
Atlas Search インデックスを作成するには、プロジェクトに対するProject Data Access Admin
以上のアクセス権が必要です。
Atlas Search インデックスの作成
このセクションでは、 sample_mflix.movies
コレクションのfullplot
フィールドに Atlas Search インデックスを作成します。
Atlas Atlasで、プロジェクトの {0 ページにGoします。GoClusters
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの Clusters をクリックしてください。
[ クラスター]ページが表示されます。
GoAtlas Searchクラスターの ページに します。
GoAtlas Searchページには、サイドバー、Data Explorer 、またはクラスターの詳細ページから できます。
サイドバーで、 Services見出しの下のAtlas Searchをクリックします。
[ Select data sourceドロップダウンからクラスターを選択し、[ Go to Atlas Search ] をクリックします。
Atlas Searchページが表示されます。
クラスターの [Browse Collections] ボタンをクリックします。
データベースを展開し、コレクションを選択します。
コレクションのSearch Indexesタブをクリックします。
Atlas Searchページが表示されます。
クラスタの名前をクリックします。
[Atlas Search] タブをクリックします。
Atlas Searchページが表示されます。
Index Nameを入力し、Database and Collection を設定します。
Index Nameフィールドに
multilingual-tutorial
と入力します。インデックスに
default
と名付けると、 $searchパイプライン ステージでindex
パラメータを指定する必要がなくなります。 インデックスにカスタム名を付ける場合は、index
パラメータでこの名前を指定する必要があります。Database and Collectionセクションで、
sample_mflix
データベースを検索し、movies
コレクションを選択します。
インデックスの定義を指定します。
インデックスを作成するには、 インターフェースで または を使用できます。Atlas SearchVisual EditorAtlas SearchJSON
EditorAtlas userイタリア語のみを使用して、またはイタリア語と英語の両方を使用してfullplot
フィールドを分析するようにインデックスを設定できます。
[Refine Your Index] をクリックします。
Field Mappingsセクションで、 Add FieldをクリックしてAdd Field Mappingウィンドウを表示します。
[Customized Configuration] をクリックします。
Field Nameで
fullplot
を選択します。データ型の 設定では、イタリア語のみを使用してフィールドを分析するか、イタリア語と英語の両方を使用してフィールドを分析するかを構成できます。
Data Typeドロップダウンをクリックし、String を選択します。
lucene.italian
アナライザを使用するにはIndex AnalyzerとSearch Analyzerを変更します。Index Analyzerドロップダウンから、[
lucene.language
lucene.italian
] をクリックし、[ ] を選択します。Search Analyzerが自動的に更新されなかった場合は、 Search Analyzerドロップダウンから、
lucene.language
、次にlucene.italian
の順に選択します。
Data Typeドロップダウンをクリックし、String を選択します。
lucene.italian
アナライザを使用するにはIndex AnalyzerとSearch Analyzerを変更します。Index Analyzerドロップダウンから、[
lucene.language
lucene.italian
] をクリックし、[ ] を選択します。Search Analyzerが自動的に更新されなかった場合は、 Search Analyzerドロップダウンから、
lucene.language
、次にlucene.italian
の順に選択します。
Add Multi Fieldをクリックして、
fullplot
フィールドの別のデータ型を定義します。Multi Field Nameフィールドに
fullplot_english
と入力します。lucene.english
アナライザを使用するにはIndex AnalyzerとSearch Analyzerを変更します。Index Analyzerドロップダウンから、[
lucene.language
lucene.english
] をクリックし、[ ] を選択します。Search Analyzerが自動的に更新されなかった場合は、 Search Analyzerドロップダウンから、
lucene.language
、次にlucene.english
の順に選択します。
[Add] をクリックします。
Index Configurationsセクションで、次の設定を確認し、必要に応じて変更します。
Index AnalyzerとSearch Analyzerに
lucene.standard
を使用する有効にする Dynamic Mapping
[Save Changes] をクリックします。
デフォルトの定義を以下のように置き換えます。
{ "analyzer": "lucene.standard", "searchAnalyzer": "lucene.standard", "mappings": { "dynamic": true, "fields": { "fullplot": [ { "analyzer": "lucene.italian", "searchAnalyzer": "lucene.italian", "type": "string" } ] } } } { "analyzer": "lucene.standard", "searchAnalyzer": "lucene.standard", "mappings": { "dynamic": true, "fields": { "fullplot": { "type": "string", "analyzer": "lucene.italian", "searchAnalyzer": "lucene.italian", "multi": { "fullplot_english": { "type": "string", "analyzer": "lucene.english", "searchAnalyzer": "lucene.english" } } } } } } [Next] をクリックします。
コレクションを検索
➤ [言語の選択]ドロップダウン メニューを使用して、このセクション内の例の言語を設定します。
複合演算子を使用して、2 つ以上の演算子を 1 つのクエリに結合できます。 このセクションでは、Atlas クラスターに接続し、 compound
演算子を使用してsample_mflix.movies
コレクションに対してサンプル クエリを実行します。
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの Clusters をクリックしてください。
[ Clusters (クラスター) ] ページが表示されます。
GoAtlas Searchクラスターの ページに します。
GoAtlas Searchページには、サイドバー、Data Explorer 、またはクラスターの詳細ページから できます。
サイドバーで、 Services見出しの下のAtlas Searchをクリックします。
[ Select data sourceドロップダウンからクラスターを選択し、[ Go to Atlas Search ] をクリックします。
Atlas Searchページが表示されます。
クラスターの [Browse Collections] ボタンをクリックします。
データベースを展開し、コレクションを選択します。
コレクションのSearch Indexesタブをクリックします。
Atlas Searchページが表示されます。
クラスタの名前をクリックします。
[Atlas Search] タブをクリックします。
Atlas Searchページが表示されます。
イタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
このクエリでは、次のcompound
演算子句を使用してコレクションをクエリします。
must
句を使用して、テキスト演算子とともにcoppia
という用語を含む映画プロットをイタリア語で検索するmustNot
範囲演算子を使用して、 2000から2009年の間に公開された映画を除外する句should
テキスト演算子でDrama
ジャンルの優先順位を指定する句
次のクエリをコピーして、 Query Editorに貼り付け、 Query EditorのSearchボタンをクリックします。
[ { $search: { "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "path": "fullplot", "query": "coppia" } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("2000-01-01T00:00:00.000Z"), "lt": ISODate("2009-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Drama", "path": "genres" } }] } } } ]
SCORE: 4.606284141540527 _id: "573a1394f29313caabce0561" plot: "In a Japanese slum, various residents play out their lives, dreaming o…" genres: 0: "Drama" runtime: 137 fullplot: "Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pre…" released: 1957-10-01T00:00:00.000+00:00 SCORE: 3.9604406356811523 _id: "573a1395f29313caabce26d2" plot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'ar…" genres: 0: "Mystery" 1: "Thriller" runtime: 95 fullplot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'ar…" released: 1965-11-17T00:00:00.000+00:00
クエリ結果を展開します。
Search Testerでは、返されるドキュメント内のすべてのフィールドが表示されない場合があります。 クエリパスで指定したフィールドを含むすべてのフィールドを表示するには、結果内のドキュメントを展開します。
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの Clusters をクリックしてください。
[ Clusters (クラスター) ] ページが表示されます。
GoAtlas Searchクラスターの ページに します。
GoAtlas Searchページには、サイドバー、Data Explorer 、またはクラスターの詳細ページから できます。
サイドバーで、 Services見出しの下のAtlas Searchをクリックします。
[ Select data sourceドロップダウンからクラスターを選択し、[ Go to Atlas Search ] をクリックします。
Atlas Searchページが表示されます。
クラスターの [Browse Collections] ボタンをクリックします。
データベースを展開し、コレクションを選択します。
コレクションのSearch Indexesタブをクリックします。
Atlas Searchページが表示されます。
クラスタの名前をクリックします。
[Atlas Search] タブをクリックします。
Atlas Searchページが表示されます。
英語とイタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
このクエリでは、次のcompound
演算子句を使用してコレクションをクエリします。
must
句を使用して、テキストBella
とともにmustNot
範囲演算子を使用して、 1984から2016年の間に公開された映画を除外する句should
テキスト演算子でComedy
ジャンルの優先順位を指定する句
次のクエリをコピーして、 Query Editorに貼り付け、 Query EditorのSearchボタンをクリックします。
[ { $search: { "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "query": "Bella", "path": { "value": "fullplot", "multi": "fullplot_english" } } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("1984-01-01T00:00:00.000Z"), "lt": ISODate("2016-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Comedy", "path": "genres" } }] } } } ]
SCORE: 3.909510850906372 _id: "573a1397f29313caabce8bad" plot: "He is a revenge-obssessed stevedore whose sister was brutally raped an…" genres: 0: "Drama" runtime: 137 fullplot: "In Marseilles, a woman commits suicide after she is raped in an alley.…" released: 1983-05-18T00:00:00.000+00:00 SCORE: 3.4253346920013428 _id: "573a1396f29313caabce5735" plot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: …" genres: 0: "Comedy" runtime: 100 fullplot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: …" released: 1974-11-15T00:00:00.000+00:00 SCORE: 3.363344430923462 _id: "573a1395f29313caabce13cf" plot: "Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è de…" genres: 0: "Comedy" runtime: 95 fullplot: "Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è de…" released: 1960-02-10T00:00:00.000+00:00 SCORE: 1.9502882957458496 _id: "573a1396f29313caabce5299" plot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum h…" genres: 0: "Horror" runtime: 90 fullplot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum h…" released: 1973-10-31T00:00:00.000+00:00
クエリ結果を展開します。
Search Testerでは、返されるドキュメント内のすべてのフィールドが表示されない場合があります。 クエリパスで指定したフィールドを含むすべてのフィールドを表示するには、結果内のドキュメントを展開します。
mongosh
でクラスターに接続します。
ターミナル ウィンドウでmongosh
を開き、クラスターに接続します。 接続の詳細な手順については、「 mongosh
経由での接続 」を参照してください。
sample_mflix
データベースを使用します。
mongosh
プロンプトで次のコマンドを実行します。
use sample_mflix
イタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
このクエリでは、次のcompound
演算子句を使用してコレクションをクエリします。
must
句を使用して、テキスト演算子とともにcoppia
という用語を含む映画プロットをイタリア語で検索するmustNot
範囲演算子を使用して、 2000から2009年の間に公開された映画を除外する句should
テキスト演算子でDrama
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
db.movies.aggregate([ { $search: { "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "path": "fullplot", "query": "coppia" } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("2000-01-01T00:00:00.000Z"), "lt": ISODate("2009-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Drama", "path": "genres" } }] } } }, { $project: { "_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": { "$meta": "searchScore" } } } ])
{ genres: [ 'Drama' ], title: 'Donzoko', fullplot: `Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè "civile".`, released: ISODate("1957-10-01T00:00:00.000Z"), score: 4.606284141540527 }, { genres: [ 'Mystery', 'Thriller' ], title: 'Compartiment tueurs', fullplot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", released: ISODate("1965-11-17T00:00:00.000Z"), score: 3.9604406356811523 }
mongosh
でクラスターに接続します。
ターミナル ウィンドウでmongosh
を開き、クラスターに接続します。 接続の詳細な手順については、「 mongosh
経由での接続 」を参照してください。
sample_mflix
データベースを使用します。
mongosh
プロンプトで次のコマンドを実行します。
use sample_mflix
英語とイタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
このクエリでは、次のcompound
演算子句を使用してコレクションをクエリします。
must
句を使用して、テキストBella
とともにmustNot
範囲演算子を使用して、 1984から2016年の間に公開された映画を除外する句should
テキスト演算子でComedy
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
db.movies.aggregate([ { $search: { "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "query": "Bella", "path": { "value": "fullplot", "multi": "fullplot_english" } } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("1984-01-01T00:00:00.000Z"), "lt": ISODate("2016-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Comedy", "path": "genres" } }] } } }, { $project: { "_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": { "$meta": "searchScore" } } } ])
{ genres: [ 'Drama' ], title: 'The Moon in the Gutter', fullplot: "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", released: ISODate("1983-05-18T00:00:00.000Z"), score: 3.909510850906372 }, { genres: [ 'Comedy' ], title: 'Policewoman', fullplot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", released: ISODate("1974-11-15T00:00:00.000Z"), score: 3.4253346920013428 }, { genres: [ 'Comedy' ], title: 'Love and Larceny', fullplot: `Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.`, released: ISODate("1960-02-10T00:00:00.000Z"), score: 3.363344430923462 }, { genres: [ 'Horror' ], title: 'Tales That Witness Madness', fullplot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", released: ISODate("1973-10-31T00:00:00.000Z"), score: 1.9502882957458496 }
MongoDB Compass のクラスターに接続します。
MongoDB Compass を開き、クラスターに接続します。 接続の詳細な手順については、「 Compass 経由での接続 」を参照してください。
イタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
このクエリでは、次のcompound
演算子句を使用してコレクションをクエリします。
must
句を使用して、テキスト演算子とともにcoppia
という用語を含む映画プロットをイタリア語で検索するmustNot
範囲演算子を使用して、 2000から2009年の間に公開された映画を除外する句should
テキスト演算子でDrama
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
MongoDB Compass でこのクエリを実行するには:
[Aggregations] タブをクリックします。
Select...をクリックし、ドロップダウンからステージを選択し、そのステージのクエリを追加して、次の各パイプライン ステージを構成します。 ステージを追加するには、 Add Stageをクリックします。
パイプラインステージクエリ$search
{ "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "path": "fullplot", "query": "coppia" } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("2000-01-01T00:00:00.000Z"), "lt": ISODate("2009-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Drama", "path": "genres" } }] } } $project
{ "_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": { "$meta": "searchScore" } }
Auto Previewを有効にした場合、MongoDB Compass は$project
パイプライン ステージの横に次のドキュメントを表示します。
{ genres: [ 'Drama' ], title: 'Donzoko', fullplot: `Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè "civile".`, released: ISODate("1957-10-01T00:00:00.000Z"), score: 4.606284141540527 }, { genres: [ 'Mystery', 'Thriller' ], title: 'Compartiment tueurs', fullplot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", released: ISODate("1965-11-17T00:00:00.000Z"), score: 3.9604406356811523 }
MongoDB Compass のクラスターに接続します。
MongoDB Compass を開き、クラスターに接続します。 接続の詳細な手順については、「 Compass 経由での接続 」を参照してください。
英語とイタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
このクエリでは、次のcompound
演算子句を使用してコレクションをクエリします。
must
句を使用して、テキストBella
とともにmustNot
範囲演算子を使用して、 1984から2016年の間に公開された映画を除外する句should
テキスト演算子でComedy
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
MongoDB Compass でこのクエリを実行するには:
[Aggregations] タブをクリックします。
Select...をクリックし、ドロップダウンからステージを選択し、そのステージのクエリを追加して、次の各パイプライン ステージを構成します。 ステージを追加するには、 Add Stageをクリックします。
パイプラインステージクエリ$search
{ "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "path": {"value": "fullplot", "multi": "fullplot_english"}, "query": "Bella" } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("1984-01-01T00:00:00.000Z"), "lt": ISODate("2016-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Comedy", "path": "genres" } }] } } $project
{ "_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": { "$meta": "searchScore" } }
Auto Previewを有効にした場合、MongoDB Compass は$project
パイプライン ステージの横に次のドキュメントを表示します。
{ genres: [ 'Drama' ], title: 'The Moon in the Gutter', fullplot: "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", released: ISODate("1983-05-18T00:00:00.000Z"), score: 3.909510850906372 }, { genres: [ 'Comedy' ], title: 'Policewoman', fullplot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", released: ISODate("1974-11-15T00:00:00.000Z"), score: 3.4253346920013428 }, { genres: [ 'Comedy' ], title: 'Love and Larceny', fullplot: `Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.`, released: ISODate("1960-02-10T00:00:00.000Z"), score: 3.363344430923462 }, { genres: [ 'Horror' ], title: 'Tales That Witness Madness', fullplot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", released: ISODate("1973-10-31T00:00:00.000Z"), score: 1.9502882957458496 }
Program.cs
ファイルにクエリを作成します。
Program.cs
ファイルの内容を、次のコードで置き換えます。このコード例では、次のタスクを実行します。
mongodb
パッケージと依存関係をインポートします。Atlas クラスターへの接続を確立します。
次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキスト演算子とともにcoppia
という用語を含む映画プロットをイタリア語で検索するmustNot
範囲演算子を使用して、 2000から2009年の間に公開された映画を除外する句should
テキスト演算子でDrama
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
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 OneLanguageExample 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 compound query 23 var startDate = new DateTime(2000, 01, 01, 0, 0, 0, DateTimeKind.Utc); 24 var endDate = new DateTime(2009, 01, 01, 0, 0, 0, DateTimeKind.Utc); 25 26 // define and run pipeline 27 var results = moviesCollection.Aggregate() 28 .Search(Builders<MovieDocument>.Search.Compound() 29 .Must(Builders<MovieDocument>.Search.Text(movie => movie.Fullplot, "coppia")) 30 .MustNot(Builders<MovieDocument>.Search.Range(movie => movie.Released, SearchRangeBuilder.Gt(startDate).Lt(endDate))) 31 .Should(Builders<MovieDocument>.Search.Text(movie => movie.Genres, "Drama")), 32 indexName: "multilingual-tutorial") 33 .Project<MovieDocument>(Builders<MovieDocument>.Projection 34 .Include(movie => movie.Fullplot) 35 .Include(movie => movie.Genres) 36 .Include(movie => movie.Released) 37 .Include(movie => movie.Title) 38 .Exclude(movie => movie.Id) 39 .MetaSearchScore(movie => movie.Score)) 40 .ToList(); 41 42 // print results 43 foreach (var movie in results) 44 { 45 Console.WriteLine(movie.ToJson()); 46 } 47 } 48 } 49 50 [ ]51 public class MovieDocument 52 { 53 public string Fullplot { get; set; } 54 [ ]55 public ObjectId Id { get; set; } 56 public string [] Genres { get; set; } 57 public DateTime Released { get; set; } 58 public string Title { get; set; } 59 public double Score { get; set; } 60 } サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。
ファイルをコンパイルして実行します。<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">Program.cs
dotnet run one-language-example.csproj
{ "fullplot" : "Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè \"civile\".", "genres" : ["Drama"], "released" : ISODate("1957-10-01T00:00:00Z"), "title" : "Donzoko", "score" : 4.6062841415405273 } { "fullplot" : "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", "genres" : ["Mystery", "Thriller"], "released" : ISODate("1965-11-17T00:00:00Z"), "title" : "Compartiment tueurs", "score" : 3.9604406356811523 }
Program.cs
ファイルにクエリを作成します。
Program.cs
ファイルの内容を、次のコードで置き換えます。このコード例では、次のタスクを実行します。
mongodb
パッケージと依存関係をインポートします。Atlas クラスターへの接続を確立します。
次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキストBella
とともにmustNot
範囲演算子を使用して、 1984から2016年の間に公開された映画を除外する句should
テキスト演算子でComedy
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
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 TwoLanguagesExample 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 compound query 23 var startDate = new DateTime(1984, 01, 01, 0, 0, 0, DateTimeKind.Utc); 24 var endDate = new DateTime(2016, 01, 01, 0, 0, 0, DateTimeKind.Utc); 25 26 // define and run pipeline 27 var results = moviesCollection.Aggregate() 28 .Search(Builders<MovieDocument>.Search.Compound() 29 .Must(Builders<MovieDocument>.Search.Text(Builders<MovieDocument>.SearchPath.Analyzer(movie => movie.Fullplot, "fullplot_english"), "Bella")) 30 .MustNot(Builders<MovieDocument>.Search.Range(movie => movie.Released, SearchRangeBuilder.Gt(startDate).Lt(endDate))) 31 .Should(Builders<MovieDocument>.Search.Text(movie => movie.Genres, "Comedy")), 32 indexName: "multilingual-tutorial") 33 .Project<MovieDocument>(Builders<MovieDocument>.Projection 34 .Include(movie => movie.Fullplot) 35 .Include(movie => movie.Genres) 36 .Include(movie => movie.Released) 37 .Include(movie => movie.Title) 38 .Exclude(movie => movie.Id) 39 .MetaSearchScore(movie => movie.Score)) 40 .ToList(); 41 42 // print results 43 foreach (var movie in results) 44 { 45 Console.WriteLine(movie.ToJson()); 46 } 47 } 48 } 49 50 [ ]51 public class MovieDocument 52 { 53 public string Fullplot { get; set; } 54 [ ]55 public ObjectId Id { get; set; } 56 public string [] Genres { get; set; } 57 public DateTime Released { get; set; } 58 public string Title { get; set; } 59 public double Score { get; set; } 60 } サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。
ファイルをコンパイルして実行します。<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">Program.cs
dotnet run two-languages-example.csproj
{ "fullplot" : "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", "genres" : ["Drama"], "released" : ISODate("1983-05-18T00:00:00Z"), "title" : "The Moon in the Gutter", "score" : 3.9095108509063721 } { "fullplot" : "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", "genres" : ["Comedy"], "released" : ISODate("1974-11-15T00:00:00Z"), "title" : "Policewoman", "score" : 3.4253346920013428 } { "fullplot" : "Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo \"lavoretto\". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.", "genres" : ["Comedy"], "released" : ISODate("1960-02-10T00:00:00Z"), "title" : "Love and Larceny", "score" : 3.3633444309234619 } { "fullplot" : "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", "genres" : ["Horror"], "released" : ISODate("1973-10-31T00:00:00Z"), "title" : "Tales That Witness Madness", "score" : 1.9502882957458496 }
イタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
one-language-query.go
という名前のファイルを作成します。次のコードをコピーして、
one-language-query.go
ファイルに貼り付けます。このコード例では、次のタスクを実行します。
mongodb
パッケージと依存関係をインポートします。Atlas クラスターへの接続を確立します。
次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキスト演算子とともにcoppia
という用語を含む映画プロットをイタリア語で検索するmustNot
範囲演算子を使用して、 2000から2009年の間に公開された映画を除外する句should
テキスト演算子でDrama
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.mongodb.org/mongo-driver/bson" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 ) 12 13 func main() { 14 // connect to your Atlas cluster 15 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) 16 if err != nil { 17 panic(err) 18 } 19 defer client.Disconnect(context.TODO()) 20 21 // set namespace 22 collection := client.Database("sample_mflix").Collection("movies") 23 24 // define pipeline stages 25 searchStage := bson.D{{"$search", bson.M{ 26 "index": "multilingual-tutorial", 27 "compound": bson.M{ 28 "must": bson.D{ 29 {"text", bson.M{ 30 "path": "fullplot", "query": "coppia", 31 }}}, 32 "mustNot": bson.M{ 33 "range": bson.M{ 34 "path": "released", 35 "gt": time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC), 36 "lt": time.Date(2009, time.January, 1, 0, 0, 0, 0, time.UTC), 37 }}, 38 "should": bson.D{ 39 {"text", bson.M{ 40 "path": "genres", "query": "Drama", 41 }}}, 42 }}}} 43 projectStage := bson.D{{"$project", bson.D{{"_id", 0}, {"title", 1}, {"fullplot", 1}, {"released", 1}, {"genres", 1}, {"score", bson.D{{"$meta", "searchScore"}}}}}} 44 45 // run pipeline 46 cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, projectStage}) 47 if err != nil { 48 panic(err) 49 } 50 51 // print results 52 var results []bson.D 53 if err = cursor.All(context.TODO(), &results); err != nil { 54 panic(err) 55 } 56 for _, result := range results { 57 fmt.Println(result) 58 } 59 } サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。次のコマンドを実行して、コレクションをクエリします。
go run one-language-query.go [ {genres [Drama]} {title Donzoko} {fullplot Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè "civile".} {released -386640000000} {score 4.606284141540527} ] [ {genres [Mystery Thriller]} {title Compartiment tueurs} {fullplot Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.} {released -130118400000} {score 3.9604406356811523} ]
英語とイタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
two-languages-query.go
という名前のファイルを作成します。次のコードをコピーして、
two-languages-query.go
ファイルに貼り付けます。このコード例では、次のタスクを実行します。
mongodb
パッケージと依存関係をインポートします。Atlas クラスターへの接続を確立します。
次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキストBella
とともにmustNot
範囲演算子を使用して、 1984から2016年の間に公開された映画を除外する句should
テキスト演算子でComedy
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.mongodb.org/mongo-driver/bson" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 ) 12 13 func main() { 14 // connect to your Atlas cluster 15 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) 16 if err != nil { 17 panic(err) 18 } 19 defer client.Disconnect(context.TODO()) 20 21 // set namespace 22 collection := client.Database("sample_mflix").Collection("movies") 23 24 // define pipeline stages 25 searchStage := bson.D{{"$search", bson.M{ 26 "index": "multilingual-tutorial", 27 "compound": bson.M{ 28 "must": bson.D{ 29 {"text", bson.M{ 30 "path": bson.M{"value": "fullplot", "multi": "fullplot_english"}, "query": "Bella", 31 }}}, 32 "mustNot": bson.M{ 33 "range": bson.M{ 34 "path": "released", 35 "gt": time.Date(1984, time.January, 1, 0, 0, 0, 0, time.UTC), 36 "lt": time.Date(2016, time.January, 1, 0, 0, 0, 0, time.UTC), 37 }}, 38 "should": bson.D{ 39 {"text", bson.M{ 40 "path": "genres", "query": "Comedy", 41 }}}, 42 }}}} 43 projectStage := bson.D{{"$project", bson.D{{"_id", 0}, {"title", 1}, {"fullplot", 1}, {"released", 1}, {"genres", 1}, {"score", bson.D{{"$meta", "searchScore"}}}}}} 44 45 // run pipeline 46 cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, projectStage}) 47 if err != nil { 48 panic(err) 49 } 50 51 // print results 52 var results []bson.D 53 if err = cursor.All(context.TODO(), &results); err != nil { 54 panic(err) 55 } 56 for _, result := range results { 57 fmt.Println(result) 58 } 59 } サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。次のコマンドを実行して、コレクションをクエリします。
go run two-languages-query.go [ {genres [Drama]} {title The Moon in the Gutter} {fullplot In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.} {released 422064000000} {score 3.909510850906372} ] [ {genres [Comedy]} {title Policewoman} {fullplot Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.} {released 153705600000} {score 3.4253346920013428} ] [ {genres [Comedy]} {title Love and Larceny} {fullplot Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.} {released -312163200000} {score 3.363344430923462} ] [ {genres [Horror]} {title Tales That Witness Madness} {fullplot Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.} {released 120873600000} {score 1.9502882957458496} ]
イタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
OneLanguageQuery.java
という名前のファイルを作成します。次のコードをコピーして、
OneLanguageQuery.java
ファイルに貼り付けます。このコード例では、次のタスクを実行します。
mongodb
パッケージと依存関係をインポートします。Atlas クラスターへの接続を確立します。
次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキスト演算子とともにcoppia
という用語を含む映画プロットをイタリア語で検索するmustNot
範囲演算子を使用して、 2000から2009年の間に公開された映画を除外する句should
テキスト演算子でDrama
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
1 import java.util.Arrays; 2 3 import static com.mongodb.client.model.Aggregates.project; 4 import static com.mongodb.client.model.Projections.*; 5 import com.mongodb.client.MongoClient; 6 import com.mongodb.client.MongoClients; 7 import com.mongodb.client.MongoCollection; 8 import com.mongodb.client.MongoDatabase; 9 import org.bson.Document; 10 11 public class OneLanguageQuery { 12 public static void main( String[] args ) { 13 // define clauses 14 List<Document> mustClauses = 15 List.of( new Document( 16 "text", new Document("path", "fullplot").append("query", "coppia"))); 17 List<Document> mustNotClauses = 18 List.of( new Document( 19 "range", new Document("path", "released") 20 .append("gt", Date.from(Instant.parse("2000-01-01T00:00:00.000Z"))) 21 .append("lt", Date.from(Instant.parse("2009-01-01T00:00:00.000Z"))))); 22 List<Document> shouldClauses = 23 List.of( 24 new Document("text", 25 new Document("query", "Drama") 26 .append("path", "genres"))); 27 // define query 28 Document agg = 29 new Document( "$search", 30 new Document( "index", "multilingual-tutorial") 31 .append("compound", 32 new Document().append("must", mustClauses) 33 .append("mustNot", mustNotClauses) 34 .append("should", shouldClauses))); 35 36 // specify connection 37 String uri = "<connection-string>"; 38 39 // establish connection and set namespace 40 try (MongoClient mongoClient = MongoClients.create(uri)) { 41 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 42 MongoCollection<Document> collection = database.getCollection("movies"); 43 44 // run query and print results 45 collection.aggregate(Arrays.asList(agg, 46 project(fields( 47 excludeId(), 48 include("title", "fullplot", "released", "genres"), 49 computed("score", new Document("$meta", "searchScore")))))) 50 .forEach(doc -> System.out.println(doc.toJson())); 51 } 52 } 53 } 注意
Maven 環境でサンプル コードを実行するには、 ファイルのインポート ステートメントの上に次のコードを追加します。
package com.mongodb.drivers; サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。OneLanguageQuery.java
ファイルをコンパイルして実行します。
javac OneLanguageQuery.java java OneLanguageQuery
{ "genres": ["Drama"], "title": "Donzoko", "fullplot": "Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè \"civile\".", "released": {"$date": {"$numberLong": "-386640000000"}}, "score": 4.606284141540527 } { "genres": ["Mystery", "Thriller"], "title": "Compartiment tueurs", "fullplot": "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", "released": {"$date": {"$numberLong": "-130118400000"}}, "score": 3.9604406356811523 }
英語とイタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
TwoLanguagesQuery.java
という名前のファイルを作成します。次のコードをコピーして、
TwoLanguagesQuery.java
ファイルに貼り付けます。このコード例では、次のタスクを実行します。
mongodb
パッケージと依存関係をインポートします。Atlas クラスターへの接続を確立します。
次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキストBella
とともにmustNot
範囲演算子を使用して、 1984から2016年の間に公開された映画を除外する句should
テキスト演算子でComedy
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
1 import java.util.Arrays; 2 3 import static com.mongodb.client.model.Aggregates.project; 4 import static com.mongodb.client.model.Projections.*; 5 import com.mongodb.client.MongoClient; 6 import com.mongodb.client.MongoClients; 7 import com.mongodb.client.MongoCollection; 8 import com.mongodb.client.MongoDatabase; 9 import org.bson.Document; 10 11 public class TwoLanguagesQuery { 12 public static void main( String[] args ) { 13 // define clauses 14 List<Document> mustClauses = 15 List.of( new Document( 16 "text", new Document("path", new Document("value", "fullplot").append("multi", "fullplot_english")).append("query", "Bella"))); 17 List<Document> mustNotClauses = 18 List.of( new Document( 19 "range", new Document("path", "released") 20 .append("gt", Date.from(Instant.parse("1984-01-01T00:00:00.000Z"))) 21 .append("lt", Date.from(Instant.parse("2016-01-01T00:00:00.000Z"))))); 22 List<Document> shouldClauses = 23 List.of( 24 new Document("text", 25 new Document("query", "Comedy") 26 .append("path", "genres"))); 27 // define query 28 // define query 29 Document agg = 30 new Document( "$search", 31 new Document( "index", "multilingual-tutorial") 32 .append("compound", 33 new Document().append("must", mustClauses) 34 .append("mustNot", mustNotClauses) 35 .append("should", shouldClauses)))); 36 37 // specify connection 38 String uri = "<connection-string>"; 39 40 // establish connection and set namespace 41 try (MongoClient mongoClient = MongoClients.create(uri)) { 42 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 43 MongoCollection<Document> collection = database.getCollection("movies"); 44 45 // run query and print results 46 collection.aggregate(Arrays.asList(agg, 47 project(fields( 48 excludeId(), 49 include("title", "fullplot", "released", "genres"), 50 computed("score", new Document("$meta", "searchScore")))))) 51 .forEach(doc -> System.out.println(doc.toJson())); 52 } 53 } 54 } 注意
Maven 環境でサンプル コードを実行するには、 ファイルのインポート ステートメントの上に次のコードを追加します。
package com.mongodb.drivers; サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。TwoLanguagesQuery.java
ファイルをコンパイルして実行します。
javac TwoLanguagesQuery.java java TwoLanguagesQuery
{ "genres": ["Drama"], "title": "Donzoko", "fullplot": "Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè \"civile\".", "released": {"$date": {"$numberLong": "-386640000000"}}, "score": 4.606284141540527 } { "genres": ["Drama"], "title": "The Moon in the Gutter", "fullplot": "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", "released": {"$date": "1983-05-18T00:00:00Z"}, "score": 3.909510850906372 } { "genres": ["Comedy"], "title": "Policewoman", "fullplot": "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", "released": {"$date": "1974-11-15T00:00:00Z"}, "score": 3.4253346920013428} {"genres": ["Comedy"], "title": "Love and Larceny", "fullplot": "Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo \"lavoretto\". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.", "released": {"$date": {"$numberLong": "-312163200000"}}, "score": 3.363344430923462 } { "genres": ["Horror"], "title": "Tales That Witness Madness", "fullplot": "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", "released": {"$date": "1973-10-31T00:00:00Z"}, "score": 1.9502882957458496 }
イタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
OneLanguageQuery.kt
という名前のファイルを作成します。次のコードをコピーして、
OneLanguageQuery.kt
ファイルに貼り付けます。このコード例では、次のタスクを実行します。
mongodb
パッケージと依存関係をインポートします。Atlas クラスターへの接続を確立します。
次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキスト演算子とともにcoppia
という用語を含む映画プロットをイタリア語で検索するmustNot
範囲演算子を使用して、 2000から2009年の間に公開された映画を除外する句should
テキスト演算子でDrama
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
クエリに一致するドキュメントを
AggregateFlow
インスタンスから出力します。
1 import com.mongodb.client.model.Aggregates.project 2 import com.mongodb.client.model.Projections.* 3 import com.mongodb.kotlin.client.coroutine.MongoClient 4 import kotlinx.coroutines.runBlocking 5 import org.bson.Document 6 import java.time.Instant 7 import java.util.* 8 9 fun main() { 10 // establish connection and set namespace 11 val uri = "<connection-string>" 12 val mongoClient = MongoClient.create(uri) 13 14 val database = mongoClient.getDatabase("sample_mflix") 15 val collection = database.getCollection<Document>("movies") 16 17 runBlocking { 18 // define clauses 19 val mustClauses = listOf( 20 Document( 21 "text", Document("path", "fullplot") 22 .append("query", "coppia") 23 ) 24 ) 25 26 val mustNotClauses = listOf( 27 Document( 28 "range", 29 Document("path", "released") 30 .append("gt", Date.from(Instant.parse("2000-01-01T00:00:00.000Z"))) 31 .append("lt", Date.from(Instant.parse("2009-01-01T00:00:00.000Z"))) 32 ) 33 ) 34 35 val shouldClauses = listOf( 36 Document( 37 "text", 38 Document("query", "Drama") 39 .append("path", "genres") 40 ) 41 ) 42 43 // define query 44 val agg = Document( 45 "\$search", 46 Document("index", "multilingual-tutorial") 47 .append( 48 "compound", 49 Document().append("must", mustClauses) 50 .append("mustNot", mustNotClauses) 51 .append("should", shouldClauses) 52 ) 53 ) 54 55 // run query and print results 56 val resultsFlow = collection.aggregate<Document>( 57 listOf( 58 agg, 59 project(fields( 60 excludeId(), 61 include("title", "fullplot", "released", "genres"), 62 computed("score", Document("\$meta", "searchScore")) 63 )) 64 ) 65 ) 66 67 resultsFlow.collect { println(it) } 68 } 69 70 mongoClient.close() 71 } サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。OneLanguageQuery.kt
ファイルを実行します。IDE で
OneLanguageQuery.kt
プログラムを実行すると、次のドキュメントが出力されます。Document{{genres=[Mystery, Thriller], title=Compartiment tueurs, fullplot=Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato., released=Tue Nov 16 19:00:00 EST 1965, score=4.068507194519043}}
英語とイタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
TwoLanguagesQuery.kt
という名前のファイルを作成します。次のコードをコピーして、
TwoLanguagesQuery.kt
ファイルに貼り付けます。このコード例では、次のタスクを実行します。
mongodb
パッケージと依存関係をインポートします。Atlas クラスターへの接続を確立します。
次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキストBella
とともにmustNot
範囲演算子を使用して、 1984から2016年の間に公開された映画を除外する句should
テキスト演算子でComedy
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
クエリに一致するドキュメントを
AggregateFlow
インスタンスから出力します。
1 import com.mongodb.client.model.Aggregates.project 2 import com.mongodb.client.model.Projections.* 3 import com.mongodb.kotlin.client.coroutine.MongoClient 4 import kotlinx.coroutines.runBlocking 5 import org.bson.Document 6 import java.time.Instant 7 import java.util.* 8 9 fun main() { 10 // establish connection and set namespace 11 val uri = "<connection-string>" 12 val mongoClient = MongoClient.create(uri) 13 14 val database = mongoClient.getDatabase("sample_mflix") 15 val collection = database.getCollection<Document>("movies") 16 17 runBlocking { 18 // define clauses 19 val mustClauses = listOf( 20 Document( 21 "text", 22 Document("path", Document("value", "fullplot") 23 .append("multi", "fullplot_english")) 24 .append("query", "Bella") 25 ) 26 ) 27 28 val mustNotClauses = listOf( 29 Document( 30 "range", Document("path", "released") 31 .append("gt", Date.from(Instant.parse("1984-01-01T00:00:00.000Z"))) 32 .append("lt", Date.from(Instant.parse("2016-01-01T00:00:00.000Z"))) 33 ) 34 ) 35 36 val shouldClauses = listOf( 37 Document( 38 "text", 39 Document("query", "Comedy") 40 .append("path", "genres") 41 ) 42 ) 43 44 // define query 45 val agg = Document( 46 "\$search", Document( "index", "multilingual-tutorial") 47 .append("compound", 48 Document().append("must", mustClauses) 49 .append("mustNot", mustNotClauses) 50 .append("should", shouldClauses) 51 ) 52 ) 53 54 // run query and print results 55 val resultsFlow = collection.aggregate<Document>( 56 listOf( 57 agg, 58 project(fields( 59 excludeId(), 60 include("title", "fullplot", "released", "genres"), 61 computed("score", Document("\$meta", "searchScore")) 62 )) 63 ) 64 ) 65 resultsFlow.collect { println(it) } 66 } 67 mongoClient.close() 68 } サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。TwoLanguagesQuery.kt
ファイルを実行します。IDE で
TwoLanguagesQuery.kt
プログラムを実行すると、次のドキュメントが出力されます。Document{{genres=[Drama], title=The Moon in the Gutter, fullplot=In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important., released=Tue May 17 20:00:00 EDT 1983, score=3.9086267948150635}} Document{{genres=[Comedy], title=Policewoman, fullplot=Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto., released=Thu Nov 14 19:00:00 EST 1974, score=3.410970687866211}} Document{{genres=[Comedy], title=Love and Larceny, fullplot=Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse., released=Tue Feb 09 19:00:00 EST 1960, score=3.349022388458252}} Document{{genres=[Horror], title=Tales That Witness Madness, fullplot=Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client., released=Tue Oct 30 19:00:00 EST 1973, score=1.9505233764648438}}
イタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
one-language-query.js
という名前のファイルを作成します。次のコードをコピーして、
one-language-query.js
ファイルに貼り付けます。このコード例では、次のタスクを実行します。
MongoDB の Node.js ドライバーである
mongodb
をインポートします。Atlas クラスターへの接続を確立するための
MongoClient
クラスのインスタンスを作成します。次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキスト演算子とともにcoppia
という用語を含む映画プロットをイタリア語で検索するmustNot
範囲演算子を使用して、 2000から2009年の間に公開された映画を除外する句should
テキスト演算子でDrama
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
1 const { MongoClient } = require("mongodb"); 2 3 // connect to your Atlas cluster 4 const uri = 5 "<connection-string>"; 6 7 const client = new MongoClient(uri); 8 9 async function run() { 10 try { 11 await client.connect(); 12 13 // set namespace 14 const database = client.db("sample_mflix"); 15 const coll = database.collection("movies"); 16 17 // define pipeline 18 const agg = [ 19 { $search: { 20 index: "multilingual-tutorial", 21 compound: { 22 must: [{ text: { path: "fullplot", query: "coppia"} }], 23 mustNot: [{ range: { path: "released", gt: new Date("2000-01-01T00:00:00.000Z"), lt: new Date("2009-01-01T00:00:00.000Z") } }], 24 should: [{ text: { query: "Drama", path: "genres" }}]}}}, 25 { $project: {_id: 0, title: 1, fullplot: 1, released: 1, genres: 1, score: { $meta: "searchScore" }}} 26 ]; 27 // run pipeline 28 const result = await coll.aggregate(agg); 29 30 // print results 31 await result.forEach((doc) => console.log(doc)); 32 } finally { 33 await client.close(); 34 } 35 } 36 run().catch(console.dir); サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。次のコマンドを実行して、コレクションをクエリします。
node one-language-query.js { genres: [ 'Drama' ], title: 'Donzoko', fullplot: `Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c\'\xe8 la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanit\xe8. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l\'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell\'umanit\xe8, dei vinti, dei falliti, dei rifiutati dalla societ\xe8 "civile".`, released: 1957-10-01T00:00:00.000Z, score: 4.606284141540527 } { genres: [ 'Mystery', 'Thriller' ], title: 'Compartiment tueurs', fullplot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", released: 1965-11-17T00:00:00.000Z, score: 3.9604406356811523 }
英語とイタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
two-languages-query.js
という名前のファイルを作成します。次のコードをコピーして、
two-languages-query.js
ファイルに貼り付けます。このコード例では、次のタスクを実行します。
MongoDB の Node.js ドライバーである
mongodb
をインポートします。Atlas クラスターへの接続を確立するための
MongoClient
クラスのインスタンスを作成します。次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキストBella
とともにmustNot
範囲演算子を使用して、 1984から2016年の間に公開された映画を除外する句should
テキスト演算子でComedy
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
1 const { MongoClient } = require("mongodb"); 2 3 // connect to your Atlas cluster 4 const uri = 5 "<connection-string>"; 6 7 const client = new MongoClient(uri); 8 9 async function run() { 10 try { 11 await client.connect(); 12 13 // set namespace 14 const database = client.db("sample_mflix"); 15 const coll = database.collection("movies"); 16 17 // define pipeline 18 const agg = [ 19 { $search: { 20 index: "multilingual-tutorial", 21 compound: { 22 must: [{ text: { path: { value: "fullplot", multi: "fullplot_english" }, query: "Bella"} }], 23 mustNot: [{ range: { path: "released", gt: new Date("1984-01-01T00:00:00.000Z"), lt: new Date("2016-01-01T00:00:00.000Z") } }], 24 should: [{ text: { query: "Comedy", path: "genres" }}]}}}, 25 { $project: {_id: 0, title: 1, fullplot: 1, released: 1, genres: 1, score: { $meta: "searchScore" }}} 26 ]; 27 // run pipeline 28 const result = await coll.aggregate(agg); 29 30 // print results 31 await result.forEach((doc) => console.log(doc)); 32 } finally { 33 await client.close(); 34 } 35 } 36 run().catch(console.dir); サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。次のコマンドを実行して、コレクションをクエリします。
node two-languages-query.js { genres: [ 'Drama' ], title: 'The Moon in the Gutter', fullplot: "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", released: 1983-05-18T00:00:00.000Z, score: 3.909510850906372 } { genres: [ 'Comedy' ], title: 'Policewoman', fullplot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", released: 1974-11-15T00:00:00.000Z, score: 3.4253346920013428 } { genres: [ 'Comedy' ], title: 'Love and Larceny', fullplot: `Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.`, released: 1960-02-10T00:00:00.000Z, score: 3.363344430923462 } { genres: [ 'Horror' ], title: 'Tales That Witness Madness', fullplot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", released: 1973-10-31T00:00:00.000Z, score: 1.9502882957458496 }
イタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
one-language-query.py
という名前のファイルを作成します。次のコードをコピーして、
one-language.py
ファイルに貼り付けます。次のコード例では、次を行います。
pymongo
、MongoDB の Python ドライバー、およびDNSシード リスト接続文字列を使用してpymongo
をAtlas
に接続するために必要なdns
モジュールをインポートします。Atlas クラスターへの接続を確立するための
MongoClient
クラスのインスタンスを作成します。次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキスト演算子とともにcoppia
という用語を含む映画プロットをイタリア語で検索するmustNot
範囲演算子を使用して、 2000から2009年の間に公開された映画を除外する句should
テキスト演算子でDrama
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
1 import pymongo 2 import datetime 3 4 # connect to your Atlas cluster 5 client = pymongo.MongoClient('<connection-string>') 6 7 # define pipeline 8 pipeline = [ 9 {"$search": { 10 "index": "multilingual-tutorial", 11 "compound": { 12 "must": [{"text": {"path": "fullplot", "query": "coppia"}}], 13 "mustNot": [{"range": {"path": "released", "gt": datetime.datetime(2000,1,1,0,0,0), "lt": datetime.datetime(2009,1,1,0,0,0)}}], 14 "should": [{"text": {"query": "Drama", "path": "genres"}}]}}}, 15 {"$project": {"_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": {"$meta": "searchScore"}}} 16 ] 17 # run pipeline 18 result = client["sample_mflix"]["movies"].aggregate(pipeline) 19 20 # print results 21 for i in result: 22 print(i) サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。次のコマンドを実行して、コレクションをクエリします。
python one-language.py { 'released': datetime.datetime(1957, 10, 1, 0, 0), 'genres': ['Drama'], 'score': 4.606284141540527, 'fullplot': 'Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c\'\xe8 la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanit\xe8. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l\'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell\'umanit\xe8, dei vinti, dei falliti, dei rifiutati dalla societ\xe8 "civile".', 'title': 'Donzoko' } { 'released': datetime.datetime(1965, 11, 17, 0, 0), 'genres':['Mystery', 'Thriller'], 'score': 3.9604406356811523, 'fullplot': "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", 'title': 'Compartiment tueurs' }
英語とイタリア語のタームを検索する Atlas Search 多言語クエリを実行します。
two-languages-query.py
という名前のファイルを作成します。次のコードをコピーして、
two-languages.py
ファイルに貼り付けます。次のコード例では、次を行います。
pymongo
、MongoDB の Python ドライバー、およびDNSシード リスト接続文字列を使用してpymongo
をAtlas
に接続するために必要なdns
モジュールをインポートします。Atlas クラスターへの接続を確立するための
MongoClient
クラスのインスタンスを作成します。次の
compound
演算子句を使用して、コレクションをクエリします。must
句を使用して、テキストBella
とともにmustNot
範囲演算子を使用して、 1984から2016年の間に公開された映画を除外する句should
テキスト演算子でComedy
ジャンルの優先順位を指定する句
クエリは、 $projectパイプライン ステージを使用して次の操作を実行します。
すべてのフィールドを除外
title
、fullplot
、released
、genres
次のフィールドを追加:
score
カーソルを反復処理して、クエリに一致するドキュメントを出力します。
1 import pymongo 2 import datetime 3 4 # connect to your Atlas cluster 5 client = pymongo.MongoClient('<connection-string>') 6 7 # define pipeline 8 pipeline = [ 9 {"$search": { 10 "index": "multilingual-tutorial", 11 "compound": { 12 "must": [{"text": {"path": {"value": "fullplot", "multi": "fullplot_english"}, "query": "Bella"}}], 13 "mustNot": [{"range": {"path": "released", "gt": datetime.datetime(1984,1,1,0,0,0), "lt": datetime.datetime(2016,1,1,0,0,0)}}], 14 "should": [{"text": {"query": "Comedy", "path": "genres"}}]}}}, 15 {"$project": {"_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": {"$meta": "searchScore"}}} 16 ] 17 # run pipeline 18 result = client["sample_mflix"]["movies"].aggregate(pipeline) 19 20 # print results 21 for i in result: 22 print(i) サンプルを実行する前に、
<connection-string>
をAtlas接続stringに置き換えます。 接続stringにデータベースユーザーの認証情報が含まれていることを確認します。 詳しくは、「ドライバーによる接続 」を参照してください。次のコマンドを実行して、コレクションをクエリします。
python two-languages.py { 'genres': ['Drama'], 'title': 'The Moon in the Gutter', 'fullplot': "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", 'released': datetime.datetime(1983, 5, 18, 0, 0), 'score': 3.909510850906372} { 'genres': ['Comedy'], 'title': 'Policewoman', 'fullplot': "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", 'released': datetime.datetime(1974, 11, 15, 0, 0), 'score': 3.4253346920013428} { 'genres': ['Comedy'], 'title': 'Love and Larceny', 'fullplot': 'Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l\'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l\'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.', 'released': datetime.datetime(1960, 2, 10, 0, 0), 'score': 3.363344430923462} { 'genres': ['Horror'], 'title': 'Tales That Witness Madness', 'fullplot': "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", 'released': datetime.datetime(1973, 10, 31, 0, 0), 'score': 1.9502882957458496}