How to Run Multilingual Atlas Search Queries
This tutorial describes how to create an index that uses a
language analyzer and perform a
multilingual search against the sample_mflix.movies
collection. It
takes you through the following steps:
Set up an Atlas Search index with dynamic mapping for the
sample_mflix.movies
collection. You can apply thelucene.italian
language analyzer or thelucene.italian
andlucene.english
language analyzer for indexing thefullplot
field. Atlas Search uses the defaultlucene.standard
analyzer for all the other fields that it dynamically indexes in the collection.Run an Atlas Search compound query against the
fullplot
,released
, andgenres
fields in thesample_mflix.movies
collection.
Before you begin, ensure that your Atlas cluster meets the requirements described in the Prerequisites.
To create an Atlas Search index, you must have Project Data Access Admin
or higher access to the project.
Create the Atlas Search Index
In this section, you will create an Atlas Search index on the fullplot
field in the sample_mflix.movies
collection.
In Atlas, go to the Clusters page for your project.
If it is not already displayed, select the organization that contains your desired project from the Organizations menu in the navigation bar.
If it is not already displayed, select your desired project from the Projects menu in the navigation bar.
If the Clusters page is not already displayed, click Database in the sidebar.
Go to the Atlas Search page for your cluster.
You can go the Atlas Search page from the sidebar, the Data Explorer, or your cluster details page.
In the sidebar, click Atlas Search under the Services heading.
From the Select data source dropdown, select your cluster and click Go to Atlas Search.
Click the Browse Collections button for your cluster.
Expand the database and select the collection.
Click the Search Indexes tab for the collection.
Click the cluster's name.
Click the Atlas Search tab.
Enter the Index Name, and set the Database and Collection.
In the Index Name field, enter
multilingual-tutorial
.Note
If you name your index
default
, you don't need to specify anindex
parameter when using the $search pipeline stage. Otherwise, you must specify the index name using theindex
parameter.In the Database and Collection section, find the
sample_mflix
database, and select themovies
collection.
Specify an index definition.
You can use the Atlas Search Visual Editor or the Atlas Search JSON
Editor in the Atlas user interface to create the index. You can
set up the index to analyze the fullplot
field using the Italian
language only or using both Italian and English languages.
Click Refine Your Index.
In the Field Mappings section, click Add Field to display the Add Field Mapping window.
Select
fullplot
for the Field Name.In the settings for the data type, you can configure whether to analyze the field using the Italian language only or using both Italian and English languages.
Click the Data Type dropdown and select String.
Modify the the Index Analyzer and Search Analyzer to use
lucene.italian
analyzer.From the Index Analyzer dropdown, select
lucene.language
and thenlucene.italian
.If Search Analyzer didn't automatically update, from the Search Analyzer dropdown, select
lucene.language
and thenlucene.italian
.
Click the Data Type dropdown and select String.
Modify the the Index Analyzer and Search Analyzer to use
lucene.italian
analyzer.From the Index Analyzer dropdown, select
lucene.language
and thenlucene.italian
.If Search Analyzer didn't automatically update, from the Search Analyzer dropdown, select
lucene.language
and thenlucene.italian
.
Click Add Multi Field to define another data type for the
fullplot
field.Enter
fullplot_english
in the Multi Field Name field.Modify the the Index Analyzer and Search Analyzer to use
lucene.english
analyzer.From the Index Analyzer dropdown, select
lucene.language
and thenlucene.english
.If Search Analyzer didn't automatically update, from the Search Analyzer dropdown, select
lucene.language
and thenlucene.english
.
Click Add.
In the Index Configurations section, ensure the following settings and make changes if needed:
Use
lucene.standard
for Index Analyzer and Search AnalyzerEnable Dynamic Mapping
Click Save Changes.
Replace the default definition with the following:
{ "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" } } } } } } Click Next.
Search the Collection
➤ Use the Select your language drop-down menu to set the language of the example in this section.
You can use the compound operator to combine two or more
operators into a single query. In this section, connect to your Atlas
cluster and the run the sample query against the
sample_mflix.movies
collection using the compound
operator.
In Atlas, go to the Clusters page for your project.
If it is not already displayed, select the organization that contains your desired project from the Organizations menu in the navigation bar.
If it is not already displayed, select your desired project from the Projects menu in the navigation bar.
If the Clusters page is not already displayed, click Database in the sidebar.
Go to the Atlas Search page for your cluster.
You can go the Atlas Search page from the sidebar, the Data Explorer, or your cluster details page.
In the sidebar, click Atlas Search under the Services heading.
From the Select data source dropdown, select your cluster and click Go to Atlas Search.
Click the Browse Collections button for your cluster.
Expand the database and select the collection.
Click the Search Indexes tab for the collection.
Click the cluster's name.
Click the Atlas Search tab.
Run an Atlas Search multilingual query that searches for an Italian term.
This query uses the following compound
operator clauses to query the collection:
must
clause to search for movie plots in Italian that contain the termcoppia
with the text operatormustNot
clause to exclude movies released between the years 2000 to 2009 using the range operatorshould
clause to specify preference for theDrama
genre with the text operator
Copy and paste the following query into the Query Editor, and then click the Search button in the Query Editor.
[ { $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
Expand your query results.
The Search Tester might not display all the fields in the documents it returns. To view all the fields, including the field that you specify in the query path, expand the document in the results.
In Atlas, go to the Clusters page for your project.
If it is not already displayed, select the organization that contains your desired project from the Organizations menu in the navigation bar.
If it is not already displayed, select your desired project from the Projects menu in the navigation bar.
If the Clusters page is not already displayed, click Database in the sidebar.
Go to the Atlas Search page for your cluster.
You can go the Atlas Search page from the sidebar, the Data Explorer, or your cluster details page.
In the sidebar, click Atlas Search under the Services heading.
From the Select data source dropdown, select your cluster and click Go to Atlas Search.
Click the Browse Collections button for your cluster.
Expand the database and select the collection.
Click the Search Indexes tab for the collection.
Click the cluster's name.
Click the Atlas Search tab.
Run an Atlas Search multilingual query that searches for an English and Italian term.
This query uses the following compound
operator clauses to query the collection:
must
clause to search for movie plots in English and Italian that contain the termBella
with the text operatormustNot
clause to exclude movies released between the years 1984 to 2016 using the range operatorshould
clause to specify preference for theComedy
genre with the text operator
Copy and paste the following query into the Query Editor, and then click the Search button in the Query Editor.
[ { $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
Expand your query results.
The Search Tester might not display all the fields in the documents it returns. To view all the fields, including the field that you specify in the query path, expand the document in the results.
Connect to your cluster in mongosh
.
Open mongosh
in a terminal window and
connect to your cluster. For detailed instructions on connecting,
see Connect via mongosh
.
Use the sample_mflix
database.
Run the following command at mongosh
prompt:
use sample_mflix
Run an Atlas Search multilingual query that searches for an Italian term.
This query uses the following compound
operator clauses to query the collection:
must
clause to search for movie plots in Italian that contain the termcoppia
with the text operatormustNot
clause to exclude movies released between the years 2000 to 2009 using the range operatorshould
clause to specify preference for theDrama
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
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 }
Connect to your cluster in mongosh
.
Open mongosh
in a terminal window and
connect to your cluster. For detailed instructions on connecting,
see Connect via mongosh
.
Use the sample_mflix
database.
Run the following command at mongosh
prompt:
use sample_mflix
Run an Atlas Search multilingual query that searches for an English and Italian term.
This query uses the following compound
operator clauses to query the collection:
must
clause to search for movie plots in English and Italian that contain the termBella
with the text operatormustNot
clause to exclude movies released between the years 1984 to 2016 using the range operatorshould
clause to specify preference for theComedy
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
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 }
Connect to your cluster in MongoDB Compass.
Open MongoDB Compass and connect to your cluster. For detailed instructions on connecting, see Connect via Compass.
Run an Atlas Search multilingual query that searches for an Italian term.
This query uses the following compound
operator clauses to query the collection:
must
clause to search for movie plots in Italian that contain the termcoppia
with the text operatormustNot
clause to exclude movies released between the years 2000 to 2009 using the range operatorshould
clause to specify preference for theDrama
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
To run this query in MongoDB Compass:
Click the Aggregations tab.
Click Select..., then configure each of the following pipeline stages by selecting the stage from the dropdown and adding the query for that stage. Click Add Stage to add additional stages.
Pipeline StageQuery$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" } }
If you enabled Auto Preview, MongoDB Compass displays the
following documents next to the $project
pipeline stage:
{ 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 }
Connect to your cluster in MongoDB Compass.
Open MongoDB Compass and connect to your cluster. For detailed instructions on connecting, see Connect via Compass.
Run an Atlas Search multilingual query that searches for an English and Italian term.
This query uses the following compound
operator clauses to query the collection:
must
clause to search for movie plots in English and Italian that contain the termBella
with the text operatormustNot
clause to exclude movies released between the years 1984 to 2016 using the range operatorshould
clause to specify preference for theComedy
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
To run this query in MongoDB Compass:
Click the Aggregations tab.
Click Select..., then configure each of the following pipeline stages by selecting the stage from the dropdown and adding the query for that stage. Click Add Stage to add additional stages.
Pipeline StageQuery$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" } }
If you enabled Auto Preview, MongoDB Compass displays the
following documents next to the $project
pipeline stage:
{ 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 }
Set up and initialize the .NET/C# project for the query.
Create a new directory called
one-language-example
and initialize your project with thedotnet new
command.mkdir one-language-example cd one-language-example dotnet new console Add the .NET/C# Driver to your project as a dependency.
dotnet add package MongoDB.Driver
Create the query in the Program.cs
file.
Replace the contents of the
Program.cs
file with the following code.The code example performs the following tasks:
Imports
mongodb
packages and dependencies.Establishes a connection to your Atlas cluster.
Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in Italian that contain the termcoppia
with the text operatormustNot
clause to exclude movies released between the years 2000 to 2009 using the range operatorshould
clause to specify preference for theDrama
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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 } Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.
Compile and run the Program.cs
file.
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 }
Set up and initialize the .NET/C# project for the query.
Create a new directory called
two-languages-example
and initialize your project with thedotnet new
command.mkdir two-languages-example cd two-languages-example dotnet new console Add the .NET/C# Driver to your project as a dependency.
dotnet add package MongoDB.Driver
Create the query in the Program.cs
file.
Replace the contents of the
Program.cs
file with the following code.The code example performs the following tasks:
Imports
mongodb
packages and dependencies.Establishes a connection to your Atlas cluster.
Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in English and Italian that contain the termBella
with the text operatormustNot
clause to exclude movies released between the years 1984 to 2016 using the range operatorshould
clause to specify preference for theComedy
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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 } Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.
Compile and run the Program.cs
file.
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 }
Run an Atlas Search multilingual query that searches for an Italian term.
Create a file named
one-language-query.go
.Copy and paste the following code into the
one-language-query.go
file.The code example performs the following tasks:
Imports
mongodb
packages and dependencies.Establishes a connection to your Atlas cluster.
Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in Italian that contain the termcoppia
with the text operatormustNot
clause to exclude movies released between the years 2000 to 2009 using the range operatorshould
clause to specify preference for theDrama
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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 } Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Run the following command to query your collection:
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} ]
Run an Atlas Search multilingual query that searches for an English and Italian term.
Create a file named
two-languages-query.go
.Copy and paste the following code into the
two-languages-query.go
file.The code example performs the following tasks:
Imports
mongodb
packages and dependencies.Establishes a connection to your Atlas cluster.
Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in English and Italian that contain the termBella
with the text operatormustNot
clause to exclude movies released between the years 1984 to 2016 using the range operatorshould
clause to specify preference for theComedy
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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 } Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Run the following command to query your collection:
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} ]
Run an Atlas Search multilingual query that searches for an Italian term.
Create a file named
OneLanguageQuery.java
.Copy and paste the following code into the
OneLanguageQuery.java
file.The code example performs the following tasks:
Imports
mongodb
packages and dependencies.Establishes a connection to your Atlas cluster.
Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in Italian that contain the termcoppia
with the text operatormustNot
clause to exclude movies released between the years 2000 to 2009 using the range operatorshould
clause to specify preference for theDrama
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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 } Note
To run the sample code in your Maven environment, add the following code above the import statements in your file.
package com.mongodb.drivers; Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Compile and run the
OneLanguageQuery.java
file.
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 }
Run an Atlas Search multilingual query that searches for an English and Italian term.
Create a file named
TwoLanguagesQuery.java
.Copy and paste the following code into the
TwoLanguagesQuery.java
file.The code example performs the following tasks:
Imports
mongodb
packages and dependencies.Establishes a connection to your Atlas cluster.
Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in English and Italian that contain the termBella
with the text operatormustNot
clause to exclude movies released between the years 1984 to 2016 using the range operatorshould
clause to specify preference for theComedy
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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 } Note
To run the sample code in your Maven environment, add the following code above the import statements in your file.
package com.mongodb.drivers; Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Compile and run the
TwoLanguagesQuery.java
file.
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 }
Run an Atlas Search multilingual query that searches for an Italian term.
Create a file named
OneLanguageQuery.kt
.Copy and paste the following code into the
OneLanguageQuery.kt
file.The code example performs the following tasks:
Imports
mongodb
packages and dependencies.Establishes a connection to your Atlas cluster.
Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in Italian that contain the termcoppia
with the text operatormustNot
clause to exclude movies released between the years 2000 to 2009 using the range operatorshould
clause to specify preference for theDrama
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Prints the documents that match the query from the
AggregateFlow
instance.
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 } Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Run the
OneLanguageQuery.kt
file.When you run the
OneLanguageQuery.kt
program in your IDE, it prints the following document: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}}
Run an Atlas Search multilingual query that searches for an English and Italian term.
Create a file named
TwoLanguagesQuery.kt
.Copy and paste the following code into the
TwoLanguagesQuery.kt
file.The code example performs the following tasks:
Imports
mongodb
packages and dependencies.Establishes a connection to your Atlas cluster.
Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in English and Italian that contain the termBella
with the text operatormustNot
clause to exclude movies released between the years 1984 to 2016 using the range operatorshould
clause to specify preference for theComedy
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Prints the documents that match the query from the
AggregateFlow
instance.
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 } Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Run the
TwoLanguagesQuery.kt
file.When you run the
TwoLanguagesQuery.kt
program in your IDE, it prints the following documents: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}}
Run an Atlas Search multilingual query that searches for an Italian term.
Create a file named
one-language-query.js
.Copy and paste the following code into the
one-language-query.js
file.The code example performs the following tasks:
Imports
mongodb
, MongoDB's Node.js driver.Creates an instance of the
MongoClient
class to establish a connection to your Atlas cluster.Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in Italian that contain the termcoppia
with the text operatormustNot
clause to exclude movies released between the years 2000 to 2009 using the range operatorshould
clause to specify preference for theDrama
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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); Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Run the following command to query your collection:
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 }
Run an Atlas Search multilingual query that searches for an English and Italian term.
Create a file named
two-languages-query.js
.Copy and paste the following code into the
two-languages-query.js
file.The code example performs the following tasks:
Imports
mongodb
, MongoDB's Node.js driver.Creates an instance of the
MongoClient
class to establish a connection to your Atlas cluster.Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in English and Italian that contain the termBella
with the text operatormustNot
clause to exclude movies released between the years 1984 to 2016 using the range operatorshould
clause to specify preference for theComedy
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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); Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Run the following command to query your collection:
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 }
Run an Atlas Search multilingual query that searches for an Italian term.
Create a file named
one-language-query.py
.Copy and paste the following code into the
one-language.py
file.The following code example:
Imports
pymongo
, MongoDB's Python driver, and thedns
module, which is required to connectpymongo
toAtlas
using a DNS seed list connection string.Creates an instance of the
MongoClient
class to establish a connection to your Atlas cluster.Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in Italian that contain the termcoppia
with the text operatormustNot
clause to exclude movies released between the years 2000 to 2009 using the range operatorshould
clause to specify preference for theDrama
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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) Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Run the following command to query your collection:
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' }
Run an Atlas Search multilingual query that searches for an English and Italian term.
Create a file named
two-languages-query.py
.Copy and paste the following code into the
two-languages.py
file.The following code example:
Imports
pymongo
, MongoDB's Python driver, and thedns
module, which is required to connectpymongo
toAtlas
using a DNS seed list connection string.Creates an instance of the
MongoClient
class to establish a connection to your Atlas cluster.Uses the following
compound
operator clauses to query the collection:must
clause to search for movie plots in English and Italian that contain the termBella
with the text operatormustNot
clause to exclude movies released between the years 1984 to 2016 using the range operatorshould
clause to specify preference for theComedy
genre with the text operator
The query uses the $project pipeline stage to:
Exclude all fields except
title
,fullplot
,released
, andgenres
Add a field named
score
Iterates over the cursor to print the documents that match the query.
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) Before you run the sample, replace
<connection-string>
with your Atlas connection string. Ensure that your connection string includes your database user's credentials. To learn more, see Connect via Drivers.Run the following command to query your collection:
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}