“文档” 菜单
文档首页
/
MongoDB 阿特拉斯
/ /

如何运行多语言 Atlas Search 查询

在此页面上

  • 创建 Atlas Search 索引
  • 搜索集合

本教程介绍如何创建使用语言分析器的索引,并对 sample_mflix.movies集合执行多语言搜索。它将引导您完成以下步骤:

  1. sample_mflix.moviescollection设置具有动态映射的 Atlas Search 索引。您可以应用lucene.italian语言分析器或lucene.italianlucene.english语言分析器来为fullplot字段编制索引。 Atlas Search 对在collection中动态索引的所有其他字段使用默认的lucene.standard分析器。

  2. 针对sample_mflix.movies集合中的fullplotreleasedgenres字段运行 Atlas Search复合查询。

开始之前,请确保 Atlas 集群满足先决条件中所述的要求。

要创建 Atlas Search 索引,您必须拥有 Project Data Access Admin 或更高的项目访问权限。

在本部分中,您将在sample_mflix.movies collection中的fullplot字段上创建 Atlas Search 索引。

1
  1. 如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。

2

您可以从侧边栏、 Data Explorer或集群详细信息页面转到 Atlas Search 页面。

  1. 在侧边栏中,单击Services标题下的Atlas Search

  2. Select data source下拉列表中,选择您的集群并单击Go to Atlas Search

  1. 单击集群的对应 Browse Collections 按钮。

  2. 展开数据库并选择集合。

  3. 单击集合的Search Indexes标签页。

  1. 单击集群名称。

  2. 单击 Atlas Search 标签页。

3
4
  • 要获得引导式体验,请选择 Atlas Search Visual Editor

  • 要编辑原始索引定义,请选择 Atlas SearchJSON Editor

5
  1. Index Name 字段中输入 multilingual-tutorial

    注意

    如果将索引命名为 default,则在使用 $search 管道阶段时,您无需指定 index 参数。否则,您必须使用 index 参数指定索引名称。

  2. Database and Collection(数据库和集合)部分中找到 sample_mflix 数据库,然后选择 movies 集合。

6

您可以使用 Atlas user 界面中的 Atlas Search Visual Editor或 Atlas Search JSON Editor来创建索引。您可以将索引设置为仅使用意大利语言或同时使用意大利语言和英语语言来分析fullplot字段。

  1. 单击 Refine Your Index(连接)。

  2. Field Mappings 部分中,单击 Add Field 显示 Add Field Mapping 窗口。

  3. Field Name 选择 fullplot

  4. 在数据类型的设置中,您可以配置是仅使用意大利语言分析字段,还是同时使用意大利语和英语语言分析字段。

    1. 单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。

    2. 修改Index AnalyzerSearch Analyzer以使用lucene.italian分析器。

      1. Index Analyzer下拉列表中,选择lucene.language ,然后选择lucene.italian

      2. 如果Search Analyzer未自动更新,请从Search Analyzer下拉列表中选择lucene.language ,然后选择lucene.italian

    1. 单击 Data Type(添加数据)下拉列表并选择 String(插入文档)。

    2. 修改Index AnalyzerSearch Analyzer以使用lucene.italian分析器。

      1. Index Analyzer下拉列表中,选择lucene.language ,然后选择lucene.italian

      2. 如果Search Analyzer未自动更新,请从Search Analyzer下拉列表中选择lucene.language ,然后选择lucene.italian

    3. 单击Add Multi Field可为fullplot字段定义另一种数据类型。

    4. Multi Field Name字段中输入fullplot_english

    5. 修改Index AnalyzerSearch Analyzer以使用lucene.english分析器。

      1. Index Analyzer下拉列表中,选择lucene.language ,然后选择lucene.english

      2. 如果Search Analyzer未自动更新,请从Search Analyzer下拉列表中选择lucene.language ,然后选择lucene.english

  5. 单击 Add(连接)。

  6. Index Configurations部分中,确保以下设置并根据需要进行更改:

    • lucene.standard用于Index AnalyzerSearch Analyzer

    • 启用 Dynamic Mapping

  7. 单击 Save Changes(连接)。

  1. 将默认定义替换为以下内容:

    {
    "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"
    }
    }
    }
    }
    }
    }
  2. 单击 Next(连接)。

7
8

此时将显示一个模态窗口,让您知道索引正在构建中。点击 Close 按钮。

9

构建索引大约需要一分钟时间。在构建时,Status 列显示 Build in Progress。构建完成后,Status 列显示 Active


➤ 使用选择语言下拉菜单设置本节中示例的语言。


您可以使用复合操作符将两个或多个操作符组合成一个查询。 在本部分中,连接到你的Atlassample_mflix.movies compound集群并使用操作符针对collection运行查询。

1
  1. 如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。

2

您可以从侧边栏、 Data Explorer或集群详细信息页面转到 Atlas Search 页面。

  1. 在侧边栏中,单击Services标题下的Atlas Search

  2. Select data source下拉列表中,选择您的集群并单击Go to Atlas Search

  1. 单击集群的对应 Browse Collections 按钮。

  2. 展开数据库并选择集合。

  3. 单击集合的Search Indexes标签页。

  1. 单击集群名称。

  2. 单击 Atlas Search 标签页。

3

单击要查询的索引右侧的 Query 按钮。

4

单击Edit Query查看 JSON格式的默认查询语法示例。

5

此查询使用以下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
6

Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。

1
  1. 如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。

2

您可以从侧边栏、 Data Explorer或集群详细信息页面转到 Atlas Search 页面。

  1. 在侧边栏中,单击Services标题下的Atlas Search

  2. Select data source下拉列表中,选择您的集群并单击Go to Atlas Search

  1. 单击集群的对应 Browse Collections 按钮。

  2. 展开数据库并选择集合。

  3. 单击集合的Search Indexes标签页。

  1. 单击集群名称。

  2. 单击 Atlas Search 标签页。

3

单击要查询的索引右侧的 Query 按钮。

4

单击Edit Query可查看JSON格式的默认查询语法示例。

5

此查询使用以下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
6

Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。

1

在终端窗口中打开mongosh并连接到集群。 有关连接的详细说明,请参阅通过mongosh连接。

2

mongosh 提示符下运行以下命令:

use sample_mflix
3

此查询使用以下compound操作符子句来查询collection:

  • must 子句,用于使用文本操作符搜索包含词语coppia的意大利语电影情节

  • mustNot 子句,使用范围操作符排除2000到2009年间上映的电影

  • should 子句,用于使用文本操作符指定对Drama类型的偏好

该查询使用$project管道阶段执行以下操作:

  • 排除除titlefullplotreleasedgenres之外的所有字段

  • 添加字段 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
}
1

在终端窗口中打开mongosh并连接到集群。 有关连接的详细说明,请参阅通过mongosh连接。

2

mongosh 提示符下运行以下命令:

use sample_mflix
3

此查询使用以下compound操作符子句来查询collection:

  • must 子句,用于使用文本操作符搜索包含词语Bella的英语和意大利语电影情节

  • mustNot 子句,使用范围操作符排除1984到2016年间上映的电影

  • should 子句,用于使用文本操作符指定对Comedy类型的偏好

该查询使用$project管道阶段执行以下操作:

  • 排除除titlefullplotreleasedgenres之外的所有字段

  • 添加字段 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
}
1

打开 MongoDB Compass 并连接到您的集群。有关连接的详细说明,请参阅通过 Compass 连接。

2

Database 屏幕上,依次单击 sample_mflix 数据库和 movies 集合。

3

此查询使用以下compound操作符子句来查询collection:

  • must 子句,用于使用文本操作符搜索包含词语coppia的意大利语电影情节

  • mustNot 子句,使用范围操作符排除2000到2009年间上映的电影

  • should 子句,用于使用文本操作符指定对Drama类型的偏好

该查询使用$project管道阶段执行以下操作:

  • 排除除titlefullplotreleasedgenres之外的所有字段

  • 添加字段 score

若要在 MongoDB Compass 中运行此查询:

  1. 单击 Aggregations 标签页。

  2. 单击 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
}
1

打开 MongoDB Compass 并连接到您的集群。有关连接的详细说明,请参阅通过 Compass 连接。

2

Database 屏幕上,依次单击 sample_mflix 数据库和 movies 集合。

3

此查询使用以下compound操作符子句来查询collection:

  • must 子句,用于使用文本操作符搜索包含词语Bella的英语和意大利语电影情节

  • mustNot 子句,使用范围操作符排除1984到2016年间上映的电影

  • should 子句,用于使用文本操作符指定对Comedy类型的偏好

该查询使用$project管道阶段执行以下操作:

  • 排除除titlefullplotreleasedgenres之外的所有字段

  • 添加字段 score

若要在 MongoDB Compass 中运行此查询:

  1. 单击 Aggregations 标签页。

  2. 单击 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
}
1
  1. 创建一个名为one-language-example的新目录,并使用dotnet new命令初始化项目。

    mkdir one-language-example
    cd one-language-example
    dotnet new console
  2. 将 .NET/C# 驱动程序作为依赖项添加到项目中。

    dotnet add package MongoDB.Driver
2
  1. Program.cs文件的内容替换为以下代码。

    此代码示例将执行以下任务:

    • 导入mongodb包和依赖项。

    • 建立与您的 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语coppia的意大利语电影情节

      • mustNot 子句,使用范围操作符排除2000到2009年间上映的电影

      • should 子句,用于使用文本操作符指定对Drama类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1using MongoDB.Bson;
    2using MongoDB.Bson.Serialization.Attributes;
    3using MongoDB.Bson.Serialization.Conventions;
    4using MongoDB.Driver;
    5using MongoDB.Driver.Search;
    6
    7public 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[BsonIgnoreExtraElements]
    51public class MovieDocument
    52{
    53 public string Fullplot { get; set; }
    54 [BsonIgnoreIfDefault]
    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}
  2. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

3
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
}
1
  1. 创建一个名为two-languages-example的新目录,并使用dotnet new命令初始化项目。

    mkdir two-languages-example
    cd two-languages-example
    dotnet new console
  2. 将 .NET/C# 驱动程序作为依赖项添加到项目中。

    dotnet add package MongoDB.Driver
2
  1. Program.cs文件的内容替换为以下代码。

    此代码示例将执行以下任务:

    • 导入mongodb包和依赖项。

    • 建立与您的 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语Bella的英语和意大利语电影情节

      • mustNot 子句,使用范围操作符排除1984到2016年间上映的电影

      • should 子句,用于使用文本操作符指定对Comedy类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1using MongoDB.Bson;
    2using MongoDB.Bson.Serialization.Attributes;
    3using MongoDB.Bson.Serialization.Conventions;
    4using MongoDB.Driver;
    5using MongoDB.Driver.Search;
    6
    7public 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[BsonIgnoreExtraElements]
    51public class MovieDocument
    52{
    53 public string Fullplot { get; set; }
    54 [BsonIgnoreIfDefault]
    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}
  2. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

3
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
}
1
  1. 创建一个名为 one-language-query.go 的文件。

  2. 将以下代码复制并粘贴到 one-language-query.go 文件。

    此代码示例将执行以下任务:

    • 导入mongodb包和依赖项。

    • 建立与您的 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语coppia的意大利语电影情节

      • mustNot 子句,使用范围操作符排除2000到2009年间上映的电影

      • should 子句,用于使用文本操作符指定对Drama类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1package main
    2
    3import (
    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
    13func 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}
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 运行以下命令来查询您的集合:

    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}
    ]
1
  1. 创建一个名为 two-languages-query.go 的文件。

  2. 将以下代码复制并粘贴到 two-languages-query.go 文件。

    此代码示例将执行以下任务:

    • 导入mongodb包和依赖项。

    • 建立与您的 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语Bella的英语和意大利语电影情节

      • mustNot 子句,使用范围操作符排除1984到2016年间上映的电影

      • should 子句,用于使用文本操作符指定对Comedy类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1package main
    2
    3import (
    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
    13func 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}
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 运行以下命令来查询您的集合:

    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}
    ]
1
junit
4.11 或更高版本
mongodb-driver-sync
4.3.0 或更高版本
slf4j-log4j12
1.7.30 或更高版本
2
  1. 创建一个名为 OneLanguageQuery.java 的文件。

  2. 将以下代码复制并粘贴到 OneLanguageQuery.java 文件。

    此代码示例将执行以下任务:

    • 导入mongodb包和依赖项。

    • 建立与您的 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语coppia的意大利语电影情节

      • mustNot 子句,使用范围操作符排除2000到2009年间上映的电影

      • should 子句,用于使用文本操作符指定对Drama类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1import java.util.Arrays;
    2
    3import static com.mongodb.client.model.Aggregates.project;
    4import static com.mongodb.client.model.Projections.*;
    5import com.mongodb.client.MongoClient;
    6import com.mongodb.client.MongoClients;
    7import com.mongodb.client.MongoCollection;
    8import com.mongodb.client.MongoDatabase;
    9import org.bson.Document;
    10
    11public 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;
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 编译并运行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
}
1
junit
4.11 或更高版本
mongodb-driver-sync
4.3.0 或更高版本
slf4j-log4j12
1.7.30 或更高版本
2
  1. 创建一个名为 TwoLanguagesQuery.java 的文件。

  2. 将以下代码复制并粘贴到 TwoLanguagesQuery.java 文件。

    此代码示例将执行以下任务:

    • 导入mongodb包和依赖项。

    • 建立与您的 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语Bella的英语和意大利语电影情节

      • mustNot 子句,使用范围操作符排除1984到2016年间上映的电影

      • should 子句,用于使用文本操作符指定对Comedy类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1import java.util.Arrays;
    2
    3import static com.mongodb.client.model.Aggregates.project;
    4import static com.mongodb.client.model.Projections.*;
    5import com.mongodb.client.MongoClient;
    6import com.mongodb.client.MongoClients;
    7import com.mongodb.client.MongoCollection;
    8import com.mongodb.client.MongoDatabase;
    9import org.bson.Document;
    10
    11public 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;
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 编译并运行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
}
1
mongodb-driver-kotlin-coroutine
4.10.0 或更高版本
2
  1. 创建一个名为 OneLanguageQuery.kt 的文件。

  2. 将以下代码复制并粘贴到 OneLanguageQuery.kt 文件。

    此代码示例将执行以下任务:

    • 导入mongodb包和依赖项。

    • 建立与您的 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语coppia的意大利语电影情节

      • mustNot 子句,使用范围操作符排除2000到2009年间上映的电影

      • should 子句,用于使用文本操作符指定对Drama类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 打印与 AggregateFlow 实例中的查询相匹配的文档。

    1import com.mongodb.client.model.Aggregates.project
    2import com.mongodb.client.model.Projections.*
    3import com.mongodb.kotlin.client.coroutine.MongoClient
    4import kotlinx.coroutines.runBlocking
    5import org.bson.Document
    6import java.time.Instant
    7import java.util.*
    8
    9fun 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}
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 运行 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}}
1
mongodb-driver-kotlin-coroutine
4.10.0 或更高版本
2
  1. 创建一个名为 TwoLanguagesQuery.kt 的文件。

  2. 将以下代码复制并粘贴到 TwoLanguagesQuery.kt 文件。

    此代码示例将执行以下任务:

    • 导入mongodb包和依赖项。

    • 建立与您的 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语Bella的英语和意大利语电影情节

      • mustNot 子句,使用范围操作符排除1984到2016年间上映的电影

      • should 子句,用于使用文本操作符指定对Comedy类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 打印与 AggregateFlow 实例中的查询相匹配的文档。

    1import com.mongodb.client.model.Aggregates.project
    2import com.mongodb.client.model.Projections.*
    3import com.mongodb.kotlin.client.coroutine.MongoClient
    4import kotlinx.coroutines.runBlocking
    5import org.bson.Document
    6import java.time.Instant
    7import java.util.*
    8
    9fun 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}
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 运行 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}}
1
  1. 创建一个名为 one-language-query.js 的文件。

  2. 将以下代码复制并粘贴到 one-language-query.js 文件。

    此代码示例将执行以下任务:

    • 导入 mongodb,即 MongoDB 的 Node.js 驱动程序。

    • 创建一个 MongoClient 类实例,以建立与 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语coppia的意大利语电影情节

      • mustNot 子句,使用范围操作符排除2000到2009年间上映的电影

      • should 子句,用于使用文本操作符指定对Drama类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1const { MongoClient } = require("mongodb");
    2
    3// connect to your Atlas cluster
    4const uri =
    5 "<connection-string>";
    6
    7const client = new MongoClient(uri);
    8
    9async 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}
    36run().catch(console.dir);
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 运行以下命令来查询您的集合:

    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
    }
1
  1. 创建一个名为 two-languages-query.js 的文件。

  2. 将以下代码复制并粘贴到 two-languages-query.js 文件。

    此代码示例将执行以下任务:

    • 导入 mongodb,即 MongoDB 的 Node.js 驱动程序。

    • 创建一个 MongoClient 类实例,以建立与 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语Bella的英语和意大利语电影情节

      • mustNot 子句,使用范围操作符排除1984到2016年间上映的电影

      • should 子句,用于使用文本操作符指定对Comedy类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1const { MongoClient } = require("mongodb");
    2
    3// connect to your Atlas cluster
    4const uri =
    5 "<connection-string>";
    6
    7const client = new MongoClient(uri);
    8
    9async 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}
    36run().catch(console.dir);
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 运行以下命令来查询您的集合:

    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
    }
1
  1. 创建一个名为 one-language-query.py 的文件。

  2. 将以下代码复制并粘贴到 one-language.py 文件。

    以下代码示例:

    • 导入pymongo 、MongoDB 的 Python 驱动程序和dns模块,这是使用DNS种子列表连接字符串将pymongo连接到Atlas所必需的。

    • 创建一个 MongoClient 类实例,以建立与 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语coppia的意大利语电影情节

      • mustNot 子句,使用范围操作符排除2000到2009年间上映的电影

      • should 子句,用于使用文本操作符指定对Drama类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1import pymongo
    2import datetime
    3
    4# connect to your Atlas cluster
    5client = pymongo.MongoClient('<connection-string>')
    6
    7# define pipeline
    8pipeline = [
    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
    18result = client["sample_mflix"]["movies"].aggregate(pipeline)
    19
    20# print results
    21for i in result:
    22 print(i)
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 运行以下命令来查询您的集合:

    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'
    }
1
  1. 创建一个名为 two-languages-query.py 的文件。

  2. 将以下代码复制并粘贴到 two-languages.py 文件。

    以下代码示例:

    • 导入pymongo 、MongoDB 的 Python 驱动程序和dns模块,这是使用DNS种子列表连接字符串将pymongo连接到Atlas所必需的。

    • 创建一个 MongoClient 类实例,以建立与 Atlas 集群的连接。

    • 使用以下 compound 操作符子句对该集合进行查询:

      • must 子句,用于使用文本操作符搜索包含词语Bella的英语和意大利语电影情节

      • mustNot 子句,使用范围操作符排除1984到2016年间上映的电影

      • should 子句,用于使用文本操作符指定对Comedy类型的偏好

      该查询使用$project管道阶段执行以下操作:

      • 排除除titlefullplotreleasedgenres之外的所有字段

      • 添加字段 score

    • 遍历游标以打印与查询匹配的文档。

    1import pymongo
    2import datetime
    3
    4# connect to your Atlas cluster
    5client = pymongo.MongoClient('<connection-string>')
    6
    7# define pipeline
    8pipeline = [
    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
    18result = client["sample_mflix"]["movies"].aggregate(pipeline)
    19
    20# print results
    21for i in result:
    22 print(i)
  3. 在运行示例之前,请将 <connection-string> 替换为 Atlas 连接字符串。确保您的连接字符串包含数据库用户的档案。要了解详情,请参阅通过驱动程序连接。

  4. 运行以下命令来查询您的集合:

    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}

后退

多个子句

来年

部分匹配