如何运行多语言 Atlas Search 查询
本教程介绍如何创建一个使用语言分析器的索引,并针对 sample_mflix.movies
集合执行多语言搜索。它将引导您完成以下步骤:
为
sample_mflix.movies
collection设置具有动态映射的 Atlas Search 索引。您可以应用lucene.italian
语言分析器或lucene.italian
和lucene.english
语言分析器来为fullplot
字段编制索引。 Atlas Search 对在collection中动态索引的所有其他字段使用默认的lucene.standard
分析器。针对
sample_mflix.movies
集合中的fullplot
、released
和genres
字段运行 Atlas Search复合查询。
开始之前,请确保 Atlas 集群满足先决条件中所述的要求。
要创建 Atlas Search 索引,您必须拥有 Project Data Access Admin
或更高的项目访问权限。
创建 Atlas Search 索引
在本部分中,您将在sample_mflix.movies
collection中的fullplot
字段上创建 Atlas Search 索引。
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
显示 集群页面。
指定索引定义。
您可以使用 Atlas user 界面中的 Atlas Search Visual Editor或 Atlas Search JSON
Editor来创建索引。您可以将索引设置为仅使用意大利语言或同时使用意大利语言和英语语言来分析fullplot
字段。
单击 Refine Your Index(连接)。
在 Field Mappings 部分中,单击 Add Field 显示 Add Field Mapping 窗口。
单击 Customized Configuration(连接)。
为 Field Name 选择
fullplot
。在数据类型的设置中,您可以配置是仅使用意大利语言分析字段,还是同时使用意大利语和英语语言分析字段。
单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。
修改Index Analyzer和Search Analyzer以使用
lucene.italian
分析器。从Index Analyzer下拉列表中,选择
lucene.language
,然后选择lucene.italian
。如果Search Analyzer未自动更新,请从Search Analyzer下拉列表中选择
lucene.language
,然后选择lucene.italian
。
单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。
修改Index Analyzer和Search Analyzer以使用
lucene.italian
分析器。从Index Analyzer下拉列表中,选择
lucene.language
,然后选择lucene.italian
。如果Search Analyzer未自动更新,请从Search Analyzer下拉列表中选择
lucene.language
,然后选择lucene.italian
。
单击 Add Multi Field 以为
fullplot
字段定义另一种数据类型。在Multi Field Name字段中输入
fullplot_english
。修改Index Analyzer和Search Analyzer以使用
lucene.english
分析器。从Index Analyzer下拉列表中,选择
lucene.language
,然后选择lucene.english
。如果Search Analyzer未自动更新,请从Search Analyzer下拉列表中选择
lucene.language
,然后选择lucene.english
。
单击 Add(连接)。
在Index Configurations部分中,确保以下设置并根据需要进行更改:
将
lucene.standard
用于Index Analyzer和Search Analyzerenable Dynamic Mapping
单击 Save Changes(连接)。
将默认定义替换为以下内容:
{ "analyzer": "lucene.standard", "searchAnalyzer": "lucene.standard", "mappings": { "dynamic": true, "fields": { "fullplot": [ { "analyzer": "lucene.italian", "searchAnalyzer": "lucene.italian", "type": "string" } ] } } } { "analyzer": "lucene.standard", "searchAnalyzer": "lucene.standard", "mappings": { "dynamic": true, "fields": { "fullplot": { "type": "string", "analyzer": "lucene.italian", "searchAnalyzer": "lucene.italian", "multi": { "fullplot_english": { "type": "string", "analyzer": "lucene.english", "searchAnalyzer": "lucene.english" } } } } } } 单击 Next(连接)。
搜索集合
➤ 使用选择语言下拉菜单设置本节中示例的语言。
您可以使用复合操作符将两个或多个操作符组合成一个查询。 在本部分中,连接到你的Atlassample_mflix.movies
compound
集群并使用操作符针对collection运行查询。
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
运行 Atlas Search 多语言查询来搜索意大利语术语。
此查询使用以下compound
操作符子句来查询collection:
must
子句使用文本操作符搜索包含术语coppia
的意大利语电影情节mustNot
使用范围操作符排除 2000 至 2009 年间上映的电影should
使用文本操作符指定Drama
类型的偏好的子句
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { $search: { "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "path": "fullplot", "query": "coppia" } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("2000-01-01T00:00:00.000Z"), "lt": ISODate("2009-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Drama", "path": "genres" } }] } } } ]
SCORE: 4.606284141540527 _id: "573a1394f29313caabce0561" plot: "In a Japanese slum, various residents play out their lives, dreaming o…" genres: 0: "Drama" runtime: 137 fullplot: "Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pre…" released: 1957-10-01T00:00:00.000+00:00 SCORE: 3.9604406356811523 _id: "573a1395f29313caabce26d2" plot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'ar…" genres: 0: "Mystery" 1: "Thriller" runtime: 95 fullplot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'ar…" released: 1965-11-17T00:00:00.000+00:00
展开查询结果。
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
运行 Atlas Search 多语言查询,搜索英语和意大利语术语。
此查询使用以下compound
操作符子句来查询collection:
must
使用文本操作符搜索包含术语Bella
的英语和意大利语电影情节的子句mustNot
使用范围操作符排除 1984 至 2016 年间上映的电影should
使用文本操作符指定Comedy
类型的偏好的子句
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { $search: { "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "query": "Bella", "path": { "value": "fullplot", "multi": "fullplot_english" } } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("1984-01-01T00:00:00.000Z"), "lt": ISODate("2016-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Comedy", "path": "genres" } }] } } } ]
SCORE: 3.909510850906372 _id: "573a1397f29313caabce8bad" plot: "He is a revenge-obssessed stevedore whose sister was brutally raped an…" genres: 0: "Drama" runtime: 137 fullplot: "In Marseilles, a woman commits suicide after she is raped in an alley.…" released: 1983-05-18T00:00:00.000+00:00 SCORE: 3.4253346920013428 _id: "573a1396f29313caabce5735" plot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: …" genres: 0: "Comedy" runtime: 100 fullplot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: …" released: 1974-11-15T00:00:00.000+00:00 SCORE: 3.363344430923462 _id: "573a1395f29313caabce13cf" plot: "Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è de…" genres: 0: "Comedy" runtime: 95 fullplot: "Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è de…" released: 1960-02-10T00:00:00.000+00:00 SCORE: 1.9502882957458496 _id: "573a1396f29313caabce5299" plot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum h…" genres: 0: "Horror" runtime: 90 fullplot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum h…" released: 1973-10-31T00:00:00.000+00:00
展开查询结果。
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
通过 mongosh
连接到您的集群。
在终端窗口中打开mongosh
并连接到集群。 有关连接的详细说明,请参阅通过mongosh
连接。
使用 sample_mflix
数据库。
在 mongosh
提示符下运行以下命令:
use sample_mflix
运行 Atlas Search 多语言查询来搜索意大利语术语。
此查询使用以下compound
操作符子句来查询collection:
must
子句使用文本操作符搜索包含术语coppia
的意大利语电影情节mustNot
使用范围操作符排除 2000 至 2009 年间上映的电影should
使用文本操作符指定Drama
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
db.movies.aggregate([ { $search: { "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "path": "fullplot", "query": "coppia" } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("2000-01-01T00:00:00.000Z"), "lt": ISODate("2009-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Drama", "path": "genres" } }] } } }, { $project: { "_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": { "$meta": "searchScore" } } } ])
{ genres: [ 'Drama' ], title: 'Donzoko', fullplot: `Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè "civile".`, released: ISODate("1957-10-01T00:00:00.000Z"), score: 4.606284141540527 }, { genres: [ 'Mystery', 'Thriller' ], title: 'Compartiment tueurs', fullplot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", released: ISODate("1965-11-17T00:00:00.000Z"), score: 3.9604406356811523 }
通过 mongosh
连接到您的集群。
在终端窗口中打开mongosh
并连接到集群。 有关连接的详细说明,请参阅通过mongosh
连接。
使用 sample_mflix
数据库。
在 mongosh
提示符下运行以下命令:
use sample_mflix
运行 Atlas Search 多语言查询,搜索英语和意大利语术语。
此查询使用以下compound
操作符子句来查询collection:
must
使用文本操作符搜索包含术语Bella
的英语和意大利语电影情节的子句mustNot
使用范围操作符排除 1984 至 2016 年间上映的电影should
使用文本操作符指定Comedy
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
db.movies.aggregate([ { $search: { "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "query": "Bella", "path": { "value": "fullplot", "multi": "fullplot_english" } } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("1984-01-01T00:00:00.000Z"), "lt": ISODate("2016-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Comedy", "path": "genres" } }] } } }, { $project: { "_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": { "$meta": "searchScore" } } } ])
{ genres: [ 'Drama' ], title: 'The Moon in the Gutter', fullplot: "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", released: ISODate("1983-05-18T00:00:00.000Z"), score: 3.909510850906372 }, { genres: [ 'Comedy' ], title: 'Policewoman', fullplot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", released: ISODate("1974-11-15T00:00:00.000Z"), score: 3.4253346920013428 }, { genres: [ 'Comedy' ], title: 'Love and Larceny', fullplot: `Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.`, released: ISODate("1960-02-10T00:00:00.000Z"), score: 3.363344430923462 }, { genres: [ 'Horror' ], title: 'Tales That Witness Madness', fullplot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", released: ISODate("1973-10-31T00:00:00.000Z"), score: 1.9502882957458496 }
在 MongoDB Compass 中连接到您的集群。
打开 MongoDB Compass 并连接到您的集群。有关连接的详细说明,请参阅通过 Compass 连接。
运行 Atlas Search 多语言查询来搜索意大利语术语。
此查询使用以下compound
操作符子句来查询collection:
must
子句使用文本操作符搜索包含术语coppia
的意大利语电影情节mustNot
使用范围操作符排除 2000 至 2009 年间上映的电影should
使用文本操作符指定Drama
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
若要在 MongoDB Compass 中运行此查询:
单击 Aggregations 标签页。
单击 Select...,然后从下拉菜单中选择阶段并为该阶段添加查询,以配置以下每个管道阶段。单击 Add Stage 以添加其他阶段。
管道阶段查询$search
{ "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "path": "fullplot", "query": "coppia" } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("2000-01-01T00:00:00.000Z"), "lt": ISODate("2009-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Drama", "path": "genres" } }] } } $project
{ "_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": { "$meta": "searchScore" } }
如果启用了 Auto Preview,MongoDB Compass 将在 $project
管道阶段旁边显示以下文档:
{ genres: [ 'Drama' ], title: 'Donzoko', fullplot: `Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè "civile".`, released: ISODate("1957-10-01T00:00:00.000Z"), score: 4.606284141540527 }, { genres: [ 'Mystery', 'Thriller' ], title: 'Compartiment tueurs', fullplot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", released: ISODate("1965-11-17T00:00:00.000Z"), score: 3.9604406356811523 }
在 MongoDB Compass 中连接到您的集群。
打开 MongoDB Compass 并连接到您的集群。有关连接的详细说明,请参阅通过 Compass 连接。
运行 Atlas Search 多语言查询,搜索英语和意大利语术语。
此查询使用以下compound
操作符子句来查询collection:
must
使用文本操作符搜索包含术语Bella
的英语和意大利语电影情节的子句mustNot
使用范围操作符排除 1984 至 2016 年间上映的电影should
使用文本操作符指定Comedy
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
若要在 MongoDB Compass 中运行此查询:
单击 Aggregations 标签页。
单击 Select...,然后从下拉菜单中选择阶段并为该阶段添加查询,以配置以下每个管道阶段。单击 Add Stage 以添加其他阶段。
管道阶段查询$search
{ "index": "multilingual-tutorial", "compound": { "must": [{ "text": { "path": {"value": "fullplot", "multi": "fullplot_english"}, "query": "Bella" } }], "mustNot": [{ "range": { "path": "released", "gt": ISODate("1984-01-01T00:00:00.000Z"), "lt": ISODate("2016-01-01T00:00:00.000Z") } }], "should": [{ "text": { "query": "Comedy", "path": "genres" } }] } } $project
{ "_id": 0, "title": 1, "fullplot": 1, "released": 1, "genres": 1, "score": { "$meta": "searchScore" } }
如果启用了 Auto Preview,MongoDB Compass 将在 $project
管道阶段旁边显示以下文档:
{ genres: [ 'Drama' ], title: 'The Moon in the Gutter', fullplot: "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", released: ISODate("1983-05-18T00:00:00.000Z"), score: 3.909510850906372 }, { genres: [ 'Comedy' ], title: 'Policewoman', fullplot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", released: ISODate("1974-11-15T00:00:00.000Z"), score: 3.4253346920013428 }, { genres: [ 'Comedy' ], title: 'Love and Larceny', fullplot: `Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.`, released: ISODate("1960-02-10T00:00:00.000Z"), score: 3.363344430923462 }, { genres: [ 'Horror' ], title: 'Tales That Witness Madness', fullplot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", released: ISODate("1973-10-31T00:00:00.000Z"), score: 1.9502882957458496 }
在 Program.cs
文件中创建查询。
将
Program.cs
文件的内容替换为以下代码。此代码示例将执行以下任务:
导入
mongodb
包和依赖项。建立与您的 Atlas 集群的连接。
使用以下
compound
操作符子句对该集合进行查询:must
子句使用文本操作符搜索包含术语coppia
的意大利语电影情节mustNot
使用范围操作符排除 2000 至 2009 年间上映的电影should
使用文本操作符指定Drama
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
遍历游标以打印与查询匹配的文档。
1 using MongoDB.Bson; 2 using MongoDB.Bson.Serialization.Attributes; 3 using MongoDB.Bson.Serialization.Conventions; 4 using MongoDB.Driver; 5 using MongoDB.Driver.Search; 6 7 public class OneLanguageExample 8 { 9 private const string MongoConnectionString = "<connection-string>"; 10 11 public static void Main(string[] args) 12 { 13 // allow automapping of the camelCase database fields to our MovieDocument 14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; 15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); 16 17 // connect to your Atlas cluster 18 var mongoClient = new MongoClient(MongoConnectionString); 19 var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); 20 var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); 21 22 // declare data for compound query 23 var startDate = new DateTime(2000, 01, 01, 0, 0, 0, DateTimeKind.Utc); 24 var endDate = new DateTime(2009, 01, 01, 0, 0, 0, DateTimeKind.Utc); 25 26 // define and run pipeline 27 var results = moviesCollection.Aggregate() 28 .Search(Builders<MovieDocument>.Search.Compound() 29 .Must(Builders<MovieDocument>.Search.Text(movie => movie.Fullplot, "coppia")) 30 .MustNot(Builders<MovieDocument>.Search.Range(movie => movie.Released, SearchRangeBuilder.Gt(startDate).Lt(endDate))) 31 .Should(Builders<MovieDocument>.Search.Text(movie => movie.Genres, "Drama")), 32 indexName: "multilingual-tutorial") 33 .Project<MovieDocument>(Builders<MovieDocument>.Projection 34 .Include(movie => movie.Fullplot) 35 .Include(movie => movie.Genres) 36 .Include(movie => movie.Released) 37 .Include(movie => movie.Title) 38 .Exclude(movie => movie.Id) 39 .MetaSearchScore(movie => movie.Score)) 40 .ToList(); 41 42 // print results 43 foreach (var movie in results) 44 { 45 Console.WriteLine(movie.ToJson()); 46 } 47 } 48 } 49 50 [ ]51 public class MovieDocument 52 { 53 public string Fullplot { get; set; } 54 [ ]55 public ObjectId Id { get; set; } 56 public string [] Genres { get; set; } 57 public DateTime Released { get; set; } 58 public string Title { get; set; } 59 public double Score { get; set; } 60 } 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。
编译并运行 Program.cs
文件。
dotnet run one-language-example.csproj
{ "fullplot" : "Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè \"civile\".", "genres" : ["Drama"], "released" : ISODate("1957-10-01T00:00:00Z"), "title" : "Donzoko", "score" : 4.6062841415405273 } { "fullplot" : "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", "genres" : ["Mystery", "Thriller"], "released" : ISODate("1965-11-17T00:00:00Z"), "title" : "Compartiment tueurs", "score" : 3.9604406356811523 }
在 Program.cs
文件中创建查询。
将
Program.cs
文件的内容替换为以下代码。此代码示例将执行以下任务:
导入
mongodb
包和依赖项。建立与您的 Atlas 集群的连接。
使用以下
compound
操作符子句对该集合进行查询:must
使用文本操作符搜索包含术语Bella
的英语和意大利语电影情节的子句mustNot
使用范围操作符排除 1984 至 2016 年间上映的电影should
使用文本操作符指定Comedy
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
遍历游标以打印与查询匹配的文档。
1 using MongoDB.Bson; 2 using MongoDB.Bson.Serialization.Attributes; 3 using MongoDB.Bson.Serialization.Conventions; 4 using MongoDB.Driver; 5 using MongoDB.Driver.Search; 6 7 public class TwoLanguagesExample 8 { 9 private const string MongoConnectionString = "<connection-string>"; 10 11 public static void Main(string[] args) 12 { 13 // allow automapping of the camelCase database fields to our MovieDocument 14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; 15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); 16 17 // connect to your Atlas cluster 18 var mongoClient = new MongoClient(MongoConnectionString); 19 var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); 20 var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); 21 22 // declare data for compound query 23 var startDate = new DateTime(1984, 01, 01, 0, 0, 0, DateTimeKind.Utc); 24 var endDate = new DateTime(2016, 01, 01, 0, 0, 0, DateTimeKind.Utc); 25 26 // define and run pipeline 27 var results = moviesCollection.Aggregate() 28 .Search(Builders<MovieDocument>.Search.Compound() 29 .Must(Builders<MovieDocument>.Search.Text(Builders<MovieDocument>.SearchPath.Analyzer(movie => movie.Fullplot, "fullplot_english"), "Bella")) 30 .MustNot(Builders<MovieDocument>.Search.Range(movie => movie.Released, SearchRangeBuilder.Gt(startDate).Lt(endDate))) 31 .Should(Builders<MovieDocument>.Search.Text(movie => movie.Genres, "Comedy")), 32 indexName: "multilingual-tutorial") 33 .Project<MovieDocument>(Builders<MovieDocument>.Projection 34 .Include(movie => movie.Fullplot) 35 .Include(movie => movie.Genres) 36 .Include(movie => movie.Released) 37 .Include(movie => movie.Title) 38 .Exclude(movie => movie.Id) 39 .MetaSearchScore(movie => movie.Score)) 40 .ToList(); 41 42 // print results 43 foreach (var movie in results) 44 { 45 Console.WriteLine(movie.ToJson()); 46 } 47 } 48 } 49 50 [ ]51 public class MovieDocument 52 { 53 public string Fullplot { get; set; } 54 [ ]55 public ObjectId Id { get; set; } 56 public string [] Genres { get; set; } 57 public DateTime Released { get; set; } 58 public string Title { get; set; } 59 public double Score { get; set; } 60 } 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。
编译并运行 Program.cs
文件。
dotnet run two-languages-example.csproj
{ "fullplot" : "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", "genres" : ["Drama"], "released" : ISODate("1983-05-18T00:00:00Z"), "title" : "The Moon in the Gutter", "score" : 3.9095108509063721 } { "fullplot" : "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", "genres" : ["Comedy"], "released" : ISODate("1974-11-15T00:00:00Z"), "title" : "Policewoman", "score" : 3.4253346920013428 } { "fullplot" : "Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo \"lavoretto\". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.", "genres" : ["Comedy"], "released" : ISODate("1960-02-10T00:00:00Z"), "title" : "Love and Larceny", "score" : 3.3633444309234619 } { "fullplot" : "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", "genres" : ["Horror"], "released" : ISODate("1973-10-31T00:00:00Z"), "title" : "Tales That Witness Madness", "score" : 1.9502882957458496 }
运行 Atlas Search 多语言查询来搜索意大利语术语。
创建一个名为
one-language-query.go
的文件。将以下代码复制并粘贴到
one-language-query.go
文件。此代码示例将执行以下任务:
导入
mongodb
包和依赖项。建立与您的 Atlas 集群的连接。
使用以下
compound
操作符子句对该集合进行查询:must
子句使用文本操作符搜索包含术语coppia
的意大利语电影情节mustNot
使用范围操作符排除 2000 至 2009 年间上映的电影should
使用文本操作符指定Drama
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
遍历游标以打印与查询匹配的文档。
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.mongodb.org/mongo-driver/bson" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 ) 12 13 func main() { 14 // connect to your Atlas cluster 15 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) 16 if err != nil { 17 panic(err) 18 } 19 defer client.Disconnect(context.TODO()) 20 21 // set namespace 22 collection := client.Database("sample_mflix").Collection("movies") 23 24 // define pipeline stages 25 searchStage := bson.D{{"$search", bson.M{ 26 "index": "multilingual-tutorial", 27 "compound": bson.M{ 28 "must": bson.D{ 29 {"text", bson.M{ 30 "path": "fullplot", "query": "coppia", 31 }}}, 32 "mustNot": bson.M{ 33 "range": bson.M{ 34 "path": "released", 35 "gt": time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC), 36 "lt": time.Date(2009, time.January, 1, 0, 0, 0, 0, time.UTC), 37 }}, 38 "should": bson.D{ 39 {"text", bson.M{ 40 "path": "genres", "query": "Drama", 41 }}}, 42 }}}} 43 projectStage := bson.D{{"$project", bson.D{{"_id", 0}, {"title", 1}, {"fullplot", 1}, {"released", 1}, {"genres", 1}, {"score", bson.D{{"$meta", "searchScore"}}}}}} 44 45 // run pipeline 46 cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, projectStage}) 47 if err != nil { 48 panic(err) 49 } 50 51 // print results 52 var results []bson.D 53 if err = cursor.All(context.TODO(), &results); err != nil { 54 panic(err) 55 } 56 for _, result := range results { 57 fmt.Println(result) 58 } 59 } 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。运行以下命令来查询您的集合:
go run one-language-query.go [ {genres [Drama]} {title Donzoko} {fullplot Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè "civile".} {released -386640000000} {score 4.606284141540527} ] [ {genres [Mystery Thriller]} {title Compartiment tueurs} {fullplot Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.} {released -130118400000} {score 3.9604406356811523} ]
运行 Atlas Search 多语言查询,搜索英语和意大利语术语。
创建一个名为
two-languages-query.go
的文件。将以下代码复制并粘贴到
two-languages-query.go
文件。此代码示例将执行以下任务:
导入
mongodb
包和依赖项。建立与您的 Atlas 集群的连接。
使用以下
compound
操作符子句对该集合进行查询:must
使用文本操作符搜索包含术语Bella
的英语和意大利语电影情节的子句mustNot
使用范围操作符排除 1984 至 2016 年间上映的电影should
使用文本操作符指定Comedy
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
遍历游标以打印与查询匹配的文档。
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 8 "go.mongodb.org/mongo-driver/bson" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 ) 12 13 func main() { 14 // connect to your Atlas cluster 15 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) 16 if err != nil { 17 panic(err) 18 } 19 defer client.Disconnect(context.TODO()) 20 21 // set namespace 22 collection := client.Database("sample_mflix").Collection("movies") 23 24 // define pipeline stages 25 searchStage := bson.D{{"$search", bson.M{ 26 "index": "multilingual-tutorial", 27 "compound": bson.M{ 28 "must": bson.D{ 29 {"text", bson.M{ 30 "path": bson.M{"value": "fullplot", "multi": "fullplot_english"}, "query": "Bella", 31 }}}, 32 "mustNot": bson.M{ 33 "range": bson.M{ 34 "path": "released", 35 "gt": time.Date(1984, time.January, 1, 0, 0, 0, 0, time.UTC), 36 "lt": time.Date(2016, time.January, 1, 0, 0, 0, 0, time.UTC), 37 }}, 38 "should": bson.D{ 39 {"text", bson.M{ 40 "path": "genres", "query": "Comedy", 41 }}}, 42 }}}} 43 projectStage := bson.D{{"$project", bson.D{{"_id", 0}, {"title", 1}, {"fullplot", 1}, {"released", 1}, {"genres", 1}, {"score", bson.D{{"$meta", "searchScore"}}}}}} 44 45 // run pipeline 46 cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, projectStage}) 47 if err != nil { 48 panic(err) 49 } 50 51 // print results 52 var results []bson.D 53 if err = cursor.All(context.TODO(), &results); err != nil { 54 panic(err) 55 } 56 for _, result := range results { 57 fmt.Println(result) 58 } 59 } 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。运行以下命令来查询您的集合:
go run two-languages-query.go [ {genres [Drama]} {title The Moon in the Gutter} {fullplot In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.} {released 422064000000} {score 3.909510850906372} ] [ {genres [Comedy]} {title Policewoman} {fullplot Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.} {released 153705600000} {score 3.4253346920013428} ] [ {genres [Comedy]} {title Love and Larceny} {fullplot Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.} {released -312163200000} {score 3.363344430923462} ] [ {genres [Horror]} {title Tales That Witness Madness} {fullplot Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.} {released 120873600000} {score 1.9502882957458496} ]
运行 Atlas Search 多语言查询来搜索意大利语术语。
创建一个名为
OneLanguageQuery.java
的文件。将以下代码复制并粘贴到
OneLanguageQuery.java
文件。此代码示例将执行以下任务:
导入
mongodb
包和依赖项。建立与您的 Atlas 集群的连接。
使用以下
compound
操作符子句对该集合进行查询:must
子句使用文本操作符搜索包含术语coppia
的意大利语电影情节mustNot
使用范围操作符排除 2000 至 2009 年间上映的电影should
使用文本操作符指定Drama
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
遍历游标以打印与查询匹配的文档。
1 import java.util.Arrays; 2 3 import static com.mongodb.client.model.Aggregates.project; 4 import static com.mongodb.client.model.Projections.*; 5 import com.mongodb.client.MongoClient; 6 import com.mongodb.client.MongoClients; 7 import com.mongodb.client.MongoCollection; 8 import com.mongodb.client.MongoDatabase; 9 import org.bson.Document; 10 11 public class OneLanguageQuery { 12 public static void main( String[] args ) { 13 // define clauses 14 List<Document> mustClauses = 15 List.of( new Document( 16 "text", new Document("path", "fullplot").append("query", "coppia"))); 17 List<Document> mustNotClauses = 18 List.of( new Document( 19 "range", new Document("path", "released") 20 .append("gt", Date.from(Instant.parse("2000-01-01T00:00:00.000Z"))) 21 .append("lt", Date.from(Instant.parse("2009-01-01T00:00:00.000Z"))))); 22 List<Document> shouldClauses = 23 List.of( 24 new Document("text", 25 new Document("query", "Drama") 26 .append("path", "genres"))); 27 // define query 28 Document agg = 29 new Document( "$search", 30 new Document( "index", "multilingual-tutorial") 31 .append("compound", 32 new Document().append("must", mustClauses) 33 .append("mustNot", mustNotClauses) 34 .append("should", shouldClauses))); 35 36 // specify connection 37 String uri = "<connection-string>"; 38 39 // establish connection and set namespace 40 try (MongoClient mongoClient = MongoClients.create(uri)) { 41 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 42 MongoCollection<Document> collection = database.getCollection("movies"); 43 44 // run query and print results 45 collection.aggregate(Arrays.asList(agg, 46 project(fields( 47 excludeId(), 48 include("title", "fullplot", "released", "genres"), 49 computed("score", new Document("$meta", "searchScore")))))) 50 .forEach(doc -> System.out.println(doc.toJson())); 51 } 52 } 53 } 注意
要在 Maven 环境中运行示例代码,请将以下代码添加到文件中的 import 语句上方。
package com.mongodb.drivers; 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。编译并运行
OneLanguageQuery.java
文件。
javac OneLanguageQuery.java java OneLanguageQuery
{ "genres": ["Drama"], "title": "Donzoko", "fullplot": "Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè \"civile\".", "released": {"$date": {"$numberLong": "-386640000000"}}, "score": 4.606284141540527 } { "genres": ["Mystery", "Thriller"], "title": "Compartiment tueurs", "fullplot": "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", "released": {"$date": {"$numberLong": "-130118400000"}}, "score": 3.9604406356811523 }
运行 Atlas Search 多语言查询,搜索英语和意大利语术语。
创建一个名为
TwoLanguagesQuery.java
的文件。将以下代码复制并粘贴到
TwoLanguagesQuery.java
文件。此代码示例将执行以下任务:
导入
mongodb
包和依赖项。建立与您的 Atlas 集群的连接。
使用以下
compound
操作符子句对该集合进行查询:must
使用文本操作符搜索包含术语Bella
的英语和意大利语电影情节的子句mustNot
使用范围操作符排除 1984 至 2016 年间上映的电影should
使用文本操作符指定Comedy
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
遍历游标以打印与查询匹配的文档。
1 import java.util.Arrays; 2 3 import static com.mongodb.client.model.Aggregates.project; 4 import static com.mongodb.client.model.Projections.*; 5 import com.mongodb.client.MongoClient; 6 import com.mongodb.client.MongoClients; 7 import com.mongodb.client.MongoCollection; 8 import com.mongodb.client.MongoDatabase; 9 import org.bson.Document; 10 11 public class TwoLanguagesQuery { 12 public static void main( String[] args ) { 13 // define clauses 14 List<Document> mustClauses = 15 List.of( new Document( 16 "text", new Document("path", new Document("value", "fullplot").append("multi", "fullplot_english")).append("query", "Bella"))); 17 List<Document> mustNotClauses = 18 List.of( new Document( 19 "range", new Document("path", "released") 20 .append("gt", Date.from(Instant.parse("1984-01-01T00:00:00.000Z"))) 21 .append("lt", Date.from(Instant.parse("2016-01-01T00:00:00.000Z"))))); 22 List<Document> shouldClauses = 23 List.of( 24 new Document("text", 25 new Document("query", "Comedy") 26 .append("path", "genres"))); 27 // define query 28 // define query 29 Document agg = 30 new Document( "$search", 31 new Document( "index", "multilingual-tutorial") 32 .append("compound", 33 new Document().append("must", mustClauses) 34 .append("mustNot", mustNotClauses) 35 .append("should", shouldClauses)))); 36 37 // specify connection 38 String uri = "<connection-string>"; 39 40 // establish connection and set namespace 41 try (MongoClient mongoClient = MongoClients.create(uri)) { 42 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 43 MongoCollection<Document> collection = database.getCollection("movies"); 44 45 // run query and print results 46 collection.aggregate(Arrays.asList(agg, 47 project(fields( 48 excludeId(), 49 include("title", "fullplot", "released", "genres"), 50 computed("score", new Document("$meta", "searchScore")))))) 51 .forEach(doc -> System.out.println(doc.toJson())); 52 } 53 } 54 } 注意
要在 Maven 环境中运行示例代码,请将以下代码添加到文件中的 import 语句上方。
package com.mongodb.drivers; 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。编译并运行
TwoLanguagesQuery.java
文件。
javac TwoLanguagesQuery.java java TwoLanguagesQuery
{ "genres": ["Drama"], "title": "Donzoko", "fullplot": "Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c'è la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanitè. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell'umanitè, dei vinti, dei falliti, dei rifiutati dalla societè \"civile\".", "released": {"$date": {"$numberLong": "-386640000000"}}, "score": 4.606284141540527 } { "genres": ["Drama"], "title": "The Moon in the Gutter", "fullplot": "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", "released": {"$date": "1983-05-18T00:00:00Z"}, "score": 3.909510850906372 } { "genres": ["Comedy"], "title": "Policewoman", "fullplot": "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", "released": {"$date": "1974-11-15T00:00:00Z"}, "score": 3.4253346920013428} {"genres": ["Comedy"], "title": "Love and Larceny", "fullplot": "Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo \"lavoretto\". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.", "released": {"$date": {"$numberLong": "-312163200000"}}, "score": 3.363344430923462 } { "genres": ["Horror"], "title": "Tales That Witness Madness", "fullplot": "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", "released": {"$date": "1973-10-31T00:00:00Z"}, "score": 1.9502882957458496 }
运行 Atlas Search 多语言查询来搜索意大利语术语。
创建一个名为
OneLanguageQuery.kt
的文件。将以下代码复制并粘贴到
OneLanguageQuery.kt
文件。此代码示例将执行以下任务:
导入
mongodb
包和依赖项。建立与您的 Atlas 集群的连接。
使用以下
compound
操作符子句对该集合进行查询:must
子句使用文本操作符搜索包含术语coppia
的意大利语电影情节mustNot
使用范围操作符排除 2000 至 2009 年间上映的电影should
使用文本操作符指定Drama
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
打印与
AggregateFlow
实例中的查询相匹配的文档。
1 import com.mongodb.client.model.Aggregates.project 2 import com.mongodb.client.model.Projections.* 3 import com.mongodb.kotlin.client.coroutine.MongoClient 4 import kotlinx.coroutines.runBlocking 5 import org.bson.Document 6 import java.time.Instant 7 import java.util.* 8 9 fun main() { 10 // establish connection and set namespace 11 val uri = "<connection-string>" 12 val mongoClient = MongoClient.create(uri) 13 14 val database = mongoClient.getDatabase("sample_mflix") 15 val collection = database.getCollection<Document>("movies") 16 17 runBlocking { 18 // define clauses 19 val mustClauses = listOf( 20 Document( 21 "text", Document("path", "fullplot") 22 .append("query", "coppia") 23 ) 24 ) 25 26 val mustNotClauses = listOf( 27 Document( 28 "range", 29 Document("path", "released") 30 .append("gt", Date.from(Instant.parse("2000-01-01T00:00:00.000Z"))) 31 .append("lt", Date.from(Instant.parse("2009-01-01T00:00:00.000Z"))) 32 ) 33 ) 34 35 val shouldClauses = listOf( 36 Document( 37 "text", 38 Document("query", "Drama") 39 .append("path", "genres") 40 ) 41 ) 42 43 // define query 44 val agg = Document( 45 "\$search", 46 Document("index", "multilingual-tutorial") 47 .append( 48 "compound", 49 Document().append("must", mustClauses) 50 .append("mustNot", mustNotClauses) 51 .append("should", shouldClauses) 52 ) 53 ) 54 55 // run query and print results 56 val resultsFlow = collection.aggregate<Document>( 57 listOf( 58 agg, 59 project(fields( 60 excludeId(), 61 include("title", "fullplot", "released", "genres"), 62 computed("score", Document("\$meta", "searchScore")) 63 )) 64 ) 65 ) 66 67 resultsFlow.collect { println(it) } 68 } 69 70 mongoClient.close() 71 } 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。运行
OneLanguageQuery.kt
文件。当您在 IDE 中运行
OneLanguageQuery.kt
程序时,它会打印以下文档:Document{{genres=[Mystery, Thriller], title=Compartiment tueurs, fullplot=Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato., released=Tue Nov 16 19:00:00 EST 1965, score=4.068507194519043}}
运行 Atlas Search 多语言查询,搜索英语和意大利语术语。
创建一个名为
TwoLanguagesQuery.kt
的文件。将以下代码复制并粘贴到
TwoLanguagesQuery.kt
文件。此代码示例将执行以下任务:
导入
mongodb
包和依赖项。建立与您的 Atlas 集群的连接。
使用以下
compound
操作符子句对该集合进行查询:must
使用文本操作符搜索包含术语Bella
的英语和意大利语电影情节的子句mustNot
使用范围操作符排除 1984 至 2016 年间上映的电影should
使用文本操作符指定Comedy
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
打印与
AggregateFlow
实例中的查询相匹配的文档。
1 import com.mongodb.client.model.Aggregates.project 2 import com.mongodb.client.model.Projections.* 3 import com.mongodb.kotlin.client.coroutine.MongoClient 4 import kotlinx.coroutines.runBlocking 5 import org.bson.Document 6 import java.time.Instant 7 import java.util.* 8 9 fun main() { 10 // establish connection and set namespace 11 val uri = "<connection-string>" 12 val mongoClient = MongoClient.create(uri) 13 14 val database = mongoClient.getDatabase("sample_mflix") 15 val collection = database.getCollection<Document>("movies") 16 17 runBlocking { 18 // define clauses 19 val mustClauses = listOf( 20 Document( 21 "text", 22 Document("path", Document("value", "fullplot") 23 .append("multi", "fullplot_english")) 24 .append("query", "Bella") 25 ) 26 ) 27 28 val mustNotClauses = listOf( 29 Document( 30 "range", Document("path", "released") 31 .append("gt", Date.from(Instant.parse("1984-01-01T00:00:00.000Z"))) 32 .append("lt", Date.from(Instant.parse("2016-01-01T00:00:00.000Z"))) 33 ) 34 ) 35 36 val shouldClauses = listOf( 37 Document( 38 "text", 39 Document("query", "Comedy") 40 .append("path", "genres") 41 ) 42 ) 43 44 // define query 45 val agg = Document( 46 "\$search", Document( "index", "multilingual-tutorial") 47 .append("compound", 48 Document().append("must", mustClauses) 49 .append("mustNot", mustNotClauses) 50 .append("should", shouldClauses) 51 ) 52 ) 53 54 // run query and print results 55 val resultsFlow = collection.aggregate<Document>( 56 listOf( 57 agg, 58 project(fields( 59 excludeId(), 60 include("title", "fullplot", "released", "genres"), 61 computed("score", Document("\$meta", "searchScore")) 62 )) 63 ) 64 ) 65 resultsFlow.collect { println(it) } 66 } 67 mongoClient.close() 68 } 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。运行
TwoLanguagesQuery.kt
文件。当你在 IDE 中运行
TwoLanguagesQuery.kt
程序时,它会打印以下文档:Document{{genres=[Drama], title=The Moon in the Gutter, fullplot=In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important., released=Tue May 17 20:00:00 EDT 1983, score=3.9086267948150635}} Document{{genres=[Comedy], title=Policewoman, fullplot=Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto., released=Thu Nov 14 19:00:00 EST 1974, score=3.410970687866211}} Document{{genres=[Comedy], title=Love and Larceny, fullplot=Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse., released=Tue Feb 09 19:00:00 EST 1960, score=3.349022388458252}} Document{{genres=[Horror], title=Tales That Witness Madness, fullplot=Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client., released=Tue Oct 30 19:00:00 EST 1973, score=1.9505233764648438}}
运行 Atlas Search 多语言查询来搜索意大利语术语。
创建一个名为
one-language-query.js
的文件。将以下代码复制并粘贴到
one-language-query.js
文件。此代码示例将执行以下任务:
导入
mongodb
,即 MongoDB 的 Node.js 驱动程序。创建一个
MongoClient
类实例,以建立与 Atlas 集群的连接。使用以下
compound
操作符子句对该集合进行查询:must
子句使用文本操作符搜索包含术语coppia
的意大利语电影情节mustNot
使用范围操作符排除 2000 至 2009 年间上映的电影should
使用文本操作符指定Drama
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
遍历游标以打印与查询匹配的文档。
1 const { MongoClient } = require("mongodb"); 2 3 // connect to your Atlas cluster 4 const uri = 5 "<connection-string>"; 6 7 const client = new MongoClient(uri); 8 9 async function run() { 10 try { 11 await client.connect(); 12 13 // set namespace 14 const database = client.db("sample_mflix"); 15 const coll = database.collection("movies"); 16 17 // define pipeline 18 const agg = [ 19 { $search: { 20 index: "multilingual-tutorial", 21 compound: { 22 must: [{ text: { path: "fullplot", query: "coppia"} }], 23 mustNot: [{ range: { path: "released", gt: new Date("2000-01-01T00:00:00.000Z"), lt: new Date("2009-01-01T00:00:00.000Z") } }], 24 should: [{ text: { query: "Drama", path: "genres" }}]}}}, 25 { $project: {_id: 0, title: 1, fullplot: 1, released: 1, genres: 1, score: { $meta: "searchScore" }}} 26 ]; 27 // run pipeline 28 const result = await coll.aggregate(agg); 29 30 // print results 31 await result.forEach((doc) => console.log(doc)); 32 } finally { 33 await client.close(); 34 } 35 } 36 run().catch(console.dir); 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。运行以下命令来查询您的集合:
node one-language-query.js { genres: [ 'Drama' ], title: 'Donzoko', fullplot: `Una coppia di gretti usurai gestisce uno squallido dormitorio, nei pressi di una discarica. Una folla di larve e relitti umani affolla il locale: un ex attore alcolizzato; una prostituta; un fabbro che sragiona; disoccupati ed altri ancora. In tutti c\'\xe8 la ricerca della fuga dalla loro miseranda esistenza, attraverso alcool, gioco, sogni. Arriva un giorno al dormitorio un vecchio e saggio pellegrino, che porta in tutti una nota di speranza con la sua filosofia e la sua umanit\xe8. Ma il sogno dura poco : lo sconforto torna ad impadronirsi di tutti, al punto da portare l\'ex attore al suicidio e gli altri a ribellarsi ai due gestori. Ispirato ad un dramma di Gorkij, il film parla della parte sconfitta dell\'umanit\xe8, dei vinti, dei falliti, dei rifiutati dalla societ\xe8 "civile".`, released: 1957-10-01T00:00:00.000Z, score: 4.606284141540527 } { genres: [ 'Mystery', 'Thriller' ], title: 'Compartiment tueurs', fullplot: "Sei persone viaggiano in un vagone-letto da Marsiglia a Parigi. All'arrivo, un donna viene trovata morta nella sua cuccetta. La polizia si mette alla ricerca delle altre persone, sospettando possa essere stato uno degli altri cinque passeggeri a commettere l'omicidio, ma questi sono uccisi uno ad uno. Gli ultimi due (una coppia di ragazzi conosciutisi per caso nella carrozza) decidono di cercare di risolvere il caso, per non essere uccisi a loro volta, rischiando comunque di esserlo. Con il loro aiuto il caso viene risolto: un giovane e squattrinato studente, amante di una ricca ed attempata attrice (una delle vittime) ha organizzato gli omicidi con il suo amante, un giovane poliziotto nevrotico, per derubare la donna e fuggire insieme in Africa; per cui bisognava uccidere tutti i componenti del vagone-letto per non destare sospetti. Alla fine, dopo un inseguimento notturno per le vie di Parigi, lo studente viene arrestato ed il complice si suicida per non essere catturato.", released: 1965-11-17T00:00:00.000Z, score: 3.9604406356811523 }
运行 Atlas Search 多语言查询,搜索英语和意大利语术语。
创建一个名为
two-languages-query.js
的文件。将以下代码复制并粘贴到
two-languages-query.js
文件。此代码示例将执行以下任务:
导入
mongodb
,即 MongoDB 的 Node.js 驱动程序。创建一个
MongoClient
类实例,以建立与 Atlas 集群的连接。使用以下
compound
操作符子句对该集合进行查询:must
使用文本操作符搜索包含术语Bella
的英语和意大利语电影情节的子句mustNot
使用范围操作符排除 1984 至 2016 年间上映的电影should
使用文本操作符指定Comedy
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
遍历游标以打印与查询匹配的文档。
1 const { MongoClient } = require("mongodb"); 2 3 // connect to your Atlas cluster 4 const uri = 5 "<connection-string>"; 6 7 const client = new MongoClient(uri); 8 9 async function run() { 10 try { 11 await client.connect(); 12 13 // set namespace 14 const database = client.db("sample_mflix"); 15 const coll = database.collection("movies"); 16 17 // define pipeline 18 const agg = [ 19 { $search: { 20 index: "multilingual-tutorial", 21 compound: { 22 must: [{ text: { path: { value: "fullplot", multi: "fullplot_english" }, query: "Bella"} }], 23 mustNot: [{ range: { path: "released", gt: new Date("1984-01-01T00:00:00.000Z"), lt: new Date("2016-01-01T00:00:00.000Z") } }], 24 should: [{ text: { query: "Comedy", path: "genres" }}]}}}, 25 { $project: {_id: 0, title: 1, fullplot: 1, released: 1, genres: 1, score: { $meta: "searchScore" }}} 26 ]; 27 // run pipeline 28 const result = await coll.aggregate(agg); 29 30 // print results 31 await result.forEach((doc) => console.log(doc)); 32 } finally { 33 await client.close(); 34 } 35 } 36 run().catch(console.dir); 在运行示例之前,请将
<connection-string>
替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。运行以下命令来查询您的集合:
node two-languages-query.js { genres: [ 'Drama' ], title: 'The Moon in the Gutter', fullplot: "In Marseilles, a woman commits suicide after she is raped in an alley. Nightly, her brother Gerard broods at the scene hoping to catch the rapist. He lives with his lover Bella whom he neglects, an alcoholic brother who lurks about, and his father who's stayed drunk since the daughter's death, ignoring work and his own companion. At a seedy bar, Gerard meets a wealthy, nihilistic hedonist and his beautiful sister. Gerard flips for her and thinks she's his ticket out of the slum. Bella warns him otherwise and also, in jealousy, sets two thugs on him. Then Gerard thinks he's found his sister's rapist. These emotional crises force Gerard to choose what's most important.", released: 1983-05-18T00:00:00.000Z, score: 3.909510850906372 } { genres: [ 'Comedy' ], title: 'Policewoman', fullplot: "Giovanna e' una bella ragazza, ma ha qualche problema con gli uomini: tutti la vogliono solo usare, anche il suo fidanzata Claudio. Trovera' una via d'uscita diventando vigile urbano. Come Giovanna d'Arco, il suo idolo, non guardera' in faccia a nessuno e con l'aiuto del pretore Patane', innamorato di lei, smascherera' una serie di intrallazzi e corruzione denunciando perfino il suo capo, Marcellini. I due paladini della giustizia coroneranno il loro sogno d'amore, trasferiti in una lontana isoletta a sud della Sicilia, ma i corrotti resteranno al loro posto.", released: 1974-11-15T00:00:00.000Z, score: 3.4253346920013428 } { genres: [ 'Comedy' ], title: 'Love and Larceny', fullplot: `Gerardo è un attore o almeno cerca di esserlo, ma il pubblico non è del suo parere. Cosè, per arrotondare gli introiti, aiuta l'amico Lallo in un suo "lavoretto". Questo gli costa perè la prigione, dove incontra Chinotto e Gloria Patri. Uscito inizia, con l'opposizione di Annalisa che lo vuole sposare, una carriera come truffatore, dapprima in societè con Chinotto e quindi con la bella Elena. Tutto sembra filare a gonfie vele, e le truffe divengono sempre piè grosse e di successo. Ma a volte è destino che il ragno resti preso dalla stessa tela che tesse.`, released: 1960-02-10T00:00:00.000Z, score: 3.363344430923462 } { genres: [ 'Horror' ], title: 'Tales That Witness Madness', fullplot: "Dr Tremayne is an enigmatic Psychiatrist running a Futuristic asylum housing four very special cases. Visited by colleague Nicholas, Tremayne explains his amazing and controversial theories as to why each of the four patients went mad... cue four distinct tales each with a different set of characters: 'Mr Tiger' tells of Paul, the sensitive and troubled young son of prosperous but constantly bickering and unlovely parents, and the boy's 'imaginary' friend, a tiger. 'Penny Farthing' tells of Timothy, an antique store owner propelled backwards in time by a penny-farthing bicycle in his shop, all the while being watched over by the constantly changing photograph of Uncle Albert, which endangers the lives of both Timothy and his beautiful wife, Ann. 'Mel' tells of Brian, a man who brings home an old dead tree and prominently displays it in his living room as a work of art. His fiery wife Bella soon becomes jealous of the tree, which the husband has lovingly named Mel, and it seems to be developing a will of its own. 'Luau' tells of Auriol, a flamboyant and ambitious literary agent who will do anything to impress her sinister new client, though he seems more interested in Auriol's beautiful and precocious young daughter Ginny. Ginny sneaks off on holiday while Auriol plans a sumptuous feast for her client.", released: 1973-10-31T00:00:00.000Z, score: 1.9502882957458496 }
运行 Atlas Search 多语言查询来搜索意大利语术语。
创建一个名为
one-language-query.py
的文件。将以下代码复制并粘贴到
one-language.py
文件。以下代码示例:
导入
pymongo
、MongoDB 的 Python 驱动程序和dns
模块,这是使用 DNS 种子列表连接字符串将pymongo
连接到Atlas
所必需的。创建一个
MongoClient
类实例,以建立与 Atlas 集群的连接。使用以下
compound
操作符子句对该集合进行查询:must
子句使用文本操作符搜索包含术语coppia
的意大利语电影情节mustNot
使用范围操作符排除 2000 至 2009 年间上映的电影should
使用文本操作符指定Drama
类型的偏好的子句
该查询使用 $project 管道阶段:
排除除
title
、fullplot
、released
和genres
之外的所有字段添加字段
score
遍历游标以打印与查询匹配的文档。
1 import pymongo 2 import datetime 3 4 # connect to your Atlas cluster 5 client = pymongo.MongoClient('<connection-string>') 6 7 # define pipeline 8 pipeline = [ 9 {"$search": { 10 "index": "multilingual-tutorial", 11 "compound": { 12 "must": [{"text": {