自动补全
定义
autocomplete
autocomplete
操作符会搜索包含来自非完整输入字符串的一系列字符的词或短语。您打算使用autocomplete
操作符查询的字段必须使用集合索引定义中的 autocomplete 数据类型进行索引。要了解如何为自动完成配置索引,请参阅 如何为自动完成的字段编制索引。
注意
对于单个字符串中包含三个以上单词的查询,Atlas Search 可能会返回不准确的结果。
示例使用案例
您可以将 autocomplete
运算符与“键入时搜索”应用程序一起使用,以在应用程序的搜索字段中输入字符时更加准确地预测单词。autocomplete
返回的结果包含根据自动完成索引定义中指定的标记化策略所预测的单词。
如果要使用 Atlas Search autocomplete
操作符来构建建议或下拉列表,我们建议您查询一组建议的搜索词或使用过去的搜索词来填充下拉列表。如果您创建了单独的建议搜索词集合,则可以在 Atlas Search 索引中定义同义词映射,以在集合中搜索准确或替代单词。您可以追踪搜索词并查看搜索词的指标以构建集合。
语法
autocomplete
通过以下语法实现:
1 { 2 $search: { 3 "index": "<index name>", // optional, defaults to "default" 4 "autocomplete": { 5 "query": "<search-string>", 6 "path": "<field-to-search>", 7 "tokenOrder": "any|sequential", 8 "fuzzy": <options>, 9 "score": <options> 10 } 11 } 12 }
选项
字段 | 类型 | 说明 | 必要性 | 默认 | ||||||
---|---|---|---|---|---|---|---|---|---|---|
| 字符串或字符串数组 | 要搜索的一个或多个字符串。如果字符串中有多个词,Atlas Search 还会分别为字符串中的每个词查找匹配项。 | 是 | |||||||
| 字符串 | 要搜索的索引字段。该字段必须建立索引为
| 是 | |||||||
| 对象 | 启用模糊搜索。查找与搜索词相似的字符串。 | no | |||||||
fuzzy .maxEdits | 整型 | 匹配指定搜索词所需的最大单字符编辑数。值可以是 | no |
| ||||||
fuzzy .prefixLength | 整型 | 结果中每个术语开头必须完全匹配的字符数。 | no |
| ||||||
fuzzy .maxExpansions | 整型 | 生成和搜索变体的最大数量。此限制适用于每个令牌。 | no |
| ||||||
| 对象 | 要分配给匹配搜索词结果的分数。使用以下选项之一修改默认分数:
有关在查询中使用 | no | |||||||
| 字符串 | 搜索令牌的顺序。值可以是以下之一:
| no |
|
评分行为
属于完全匹配的 autocomplete
运算符查询结果比非完全匹配的结果得分低。如果仅指定 autocomplete 已索引的令牌子字符串,Atlas Search 则无法确定查询字符串是否与索引的文本完全匹配。要提高完全匹配的得分,请尝试以下解决方法:
注意
以下解决方法无法保证在所有情况下精确匹配都能获得较高的分数。
当
autocomplete
字段也被索引为string
时,Atlas Searchautocomplete
会提高精确匹配度,从而提高精确匹配的分数。使用复合操作符查询。
有关此解决方法的演示,请参阅 跨多个字段搜索。
示例
以下示例使用 sample_mflix
数据库中的 movies
集合。如果在集群上加载了样本数据集,则可以创建用于自动完成的静态索引,并在集群上运行示例查询。
提示
如果您已经加载示例数据集,请按照 Atlas Search 入门教程,创建索引定义并运行 Atlas Search 查询。
索引定义
以下标签页包含 edgeGram
、rightEdgeGram
和 nGram
分词器策略的示例索引定义。除了 autocomplete 类型以外,示例索引定义还包括 title
字段上的 string 和 stringFacet 类型。
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": [ 6 { 7 "type": "stringFacet" 8 }, 9 { 10 "type": "string" 11 }, 12 { 13 "foldDiacritics": false, 14 "maxGrams": 7, 15 "minGrams": 3, 16 "tokenization": "edgeGram", 17 "type": "autocomplete" 18 } 19 ] 20 } 21 } 22 }
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": [ 6 { 7 "type": "stringFacet" 8 }, 9 { 10 "type": "string" 11 }, 12 { 13 "type": "autocomplete", 14 "tokenization": "rightEdgeGram", 15 "minGrams": 3, 16 "maxGrams": 7, 17 "foldDiacritics": false 18 } 19 ] 20 } 21 } 22 }
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": [ 6 { 7 "type": "stringFacet" 8 }, 9 { 10 "type": "string" 11 }, 12 { 13 "type": "autocomplete", 14 "tokenization": "nGram", 15 "minGrams": 3, 16 "maxGrams": 7, 17 "foldDiacritics": false 18 } 19 ] 20 } 21 } 22 }
➤ 使用 Select your language(选择您的语言)下拉菜单设置此页面上示例的语言。
在 Search Tester 中查看和编辑查询语法:
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
转到集群的 Atlas Search 页面。
您可以从侧边栏、 Data Explorer 或集群详细信息页面转到 Atlas Search 页面。
在侧边栏中,单击 Services 标题下的 Atlas Search。
从 Select data source 下拉菜单中选择您的集群并单击 Go to Atlas Search。
将显示 Atlas Search 页面。
单击集群的对应 Browse Collections 按钮。
展开数据库并选择集合。
单击该集合的 Search Indexes 标签页。
将显示 Atlas Search 页面。
单击集群的名称。
单击 Atlas Search 标签页。
将显示 Atlas Search 页面。
在 mongosh
提示符下运行以下命令,以使用 sample_mflix
数据库:
use sample_mflix
基本示例
下面的查询会搜索 title
字段中包含字符 off
的电影。
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { $search: { autocomplete: { path: "title", query: "off" } } } ]
查询包括:
using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Conventions; using MongoDB.Driver; using MongoDB.Driver.Search; public class AutocompleteBasicExample { private const string MongoConnectionString = "<connection-string>"; public static void Main(string[] args) { // allow automapping of the camelCase database fields to our MovieDocument var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); // connect to your Atlas cluster var mongoClient = new MongoClient(MongoConnectionString); var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); // define and run pipeline var results = moviesCollection.Aggregate() .Search(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "off")) .Project<MovieDocument>(Builders<MovieDocument>.Projection .Include(movie => movie.Title) .Exclude(movie => movie.Id)) .Limit(10) .ToList(); // print results foreach (var movie in results) { Console.WriteLine(movie.ToJson()); } } } [ ]public class MovieDocument { [ ] public ObjectId Id { get; set; } public string Title { get; set; } }
查询包括:
package main import ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { // connect to your Atlas cluster client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) if err != nil { panic(err) } defer client.Disconnect(context.TODO()) // set namespace collection := client.Database("sample_mflix").Collection("movies") // define pipeline stages searchStage := bson.D{{"$search", bson.D{{"autocomplete", bson.D{{"query", "off"}, {"path", "title"}}}}}} limitStage := bson.D{{"$limit", 10}} projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}}}} // run pipeline cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage}) if err != nil { panic(err) } // print results var results []bson.D if err = cursor.All(context.TODO(), &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) } }
查询包括:
import static com.mongodb.client.model.Aggregates.limit; import static com.mongodb.client.model.Aggregates.project; import static com.mongodb.client.model.Projections.excludeId; import static com.mongodb.client.model.Projections.fields; import static com.mongodb.client.model.Projections.include; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import java.util.Arrays; public class AutocompleteBasicExample { public static void main(String[] args) { // connect to your Atlas cluster String uri = "<connection-string>"; try (MongoClient mongoClient = MongoClients.create(uri)) { // set namespace MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); // define pipeline Document agg = new Document("$search", new Document("autocomplete", new Document("query", "off").append("path", "title"))); // run pipeline and print results collection.aggregate(Arrays.asList(agg, limit(10), project(fields(excludeId(), include("title"))))).forEach(doc -> System.out.println(doc.toJson())); } } }
查询包括:
import com.mongodb.client.model.Aggregates.limit import com.mongodb.client.model.Aggregates.project import com.mongodb.client.model.Projections.* import com.mongodb.kotlin.client.coroutine.MongoClient import kotlinx.coroutines.runBlocking import org.bson.Document fun main() { val uri = "<connection-string>" val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") val collection = database.getCollection<Document>("movies") runBlocking { val agg = Document( "\$search", Document("autocomplete", Document("query", "off") .append("path", "title")) ) val resultsFlow = collection.aggregate<Document>( listOf( agg, limit(10), project(fields(excludeId(), include("title"))) ) ) resultsFlow.collect { println(it) } } mongoClient.close() }
查询包括:
const { MongoClient } = require("mongodb"); // connect to your Atlas cluster const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { await client.connect(); // set namespace const database = client.db("sample_mflix"); const coll = database.collection("movies"); // define pipeline const agg = [ {$search: {autocomplete: {query: "off", path: "title"}}}, {$limit: 10}, {$project: {_id: 0,title: 1}} ]; // run pipeline const result = await coll.aggregate(agg); // print results await result.forEach((doc) => console.log(doc)); } finally { await client.close(); } } run().catch(console.dir);
查询包括:
import pymongo # connect to your Atlas cluster client = pymongo.MongoClient('<connection-string>') # define pipeline pipeline = [ {"$search": {"autocomplete": {"query": "off", "path": "title"}}}, {"$limit": 10}, {"$project": {"_id": 0, "title": 1}}, ] # run pipeline result = client["sample_mflix"]["movies"].aggregate(pipeline) # print results for i in result: print(i)
SCORE: 9.361787796020508 _id: "573a13b0f29313caabd355c8" countries: Array genres: Array runtime: 100 ... title: "Off Beat" SCORE: 9.068204879760742 _id: "573a13aaf29313caabd22a8c" fullplot: "An 11-year-old girl watches her father come down with a crippling depr…" imdb: Object year: 2003 ... title: "Off the Map" SCORE: 9.068204879760742 _id: "573a13bef29313caabd5d208" plot: "With white Jewish lesbians for parents and two adopted brothers - one …" genres: Array runtime: 76 ... title: "Off and Running" SCORE: 8.742463111877441 _id: "573a13bbf29313caabd5567" countries: Array genres: Array runtime: 98 ... title: "Hands off Mississippi" SCORE: 8.61273193359375 _id: "5573a1396f29313caabce4791" plot: "Unable to deal with her parents, Jeannie Tyne runs away from home. Lar…" genres: Array runtime: 93 ... title: "Taking Off" SCORE: 8.61273193359375 _id: "573a1399f29313caabced3c1" plot: "A travelling theater group find so much action going on behind-the-sce…" genres: Array runtime: 101 ... title: "Noises Off..." SCORE: 8.61273193359375 _id: "573a139af29313caabcefc73" fullplot: "In existence for a hundred years, Grimley Colliery Brass band is as ol…" imdb: Object year: 1996 ... title: "Brassed Off" SCORE: 8.61273193359375 _id: "573a139af29313caabcf08f5" fullplot: "Sean Archer, a very tough, rugged FBI Agent. Who is still grieving for…" imdb: Object year: 1997 ... title: "Face/Off" SCORE: 8.603004455566406 _id: "573a13a9f29313caabd1ea36" fullplot: "Three unlikely, unsuspecting souls who come face-to-face with that mom…" imdb: Object year: 2004 ... title: "Benji: Off the Leash!" SCORE: 7.953945159912109 _id: "573a139af29313caabcf037c" plot: "Desperation drives four inner-city women (Queen Latifah, Jada Pinkett …" genres: Array runtime: 123 ... title: "Set it Off"
SCORE: 9.81808090209961 _id: "5573a1396f29313caabce4791" plot: "Unable to deal with her parents, Jeannie Tyne runs away from home. Lar…" genres: Array runtime: 93 ... title: "Taking Off" SCORE: 9.81808090209961 _id: "573a1399f29313caabced3c1" plot: "A travelling theater group find so much action going on behind-the-sce…" genres: Array runtime: 101 ... title: "Noises Off..." SCORE: 9.81808090209961 _id: "573a139af29313caabcefc73" fullplot: "In existence for a hundred years, Grimley Colliery Brass band is as ol…" imdb: Object year: 1996 ... title: "Brassed Off" SCORE: 9.81808090209961 _id: "573a139af29313caabcf08f5" fullplot: "Sean Archer, a very tough, rugged FBI Agent. Who is still grieving for…" imdb: Object year: 1997 ... title: "Face/Off" SCORE: 9.544584274291992 _id: "573a139af29313caabcf037c" plot: "Desperation drives four inner-city women (Queen Latifah, Jada Pinkett …" genres: Array runtime: 123 ... title: "Set it Off" SCORE: 9.191947937011719 _id: "573a13bbf29313caabd5567" countries: Array genres: Array runtime: 98 ... title: "Hands off Mississippi" SCORE: 9.074413299560547 _id: "573a1398f29313caabce9f28" plot: "A high school wise guy is determined to have a day off from school, de…" genres: Array runtime: 103 ... title: "Ferris Bueller's Day Off" SCORE: 9.007184982299805 _id: "573a13b0f29313caabd355c8" countries: Array genres: Array runtime: 100 ... title: "Off Beat" SCORE: 8.700296401977539 _id: "573a13a9f29313caabd1ea36" fullplot: "Three unlikely, unsuspecting souls who come face-to-face with that mom…" imdb: Object year: 2004 ... title: "Benji: Off the Leash!" SCORE: 8.33833122253418 _id: "573a13aaf29313caabd22a8c" fullplot: "An 11-year-old girl watches her father come down with a crippling depr…" imdb: Object year: 2003 ... title: "Off the Map"
SCORE: 5.802560806274414 _id: “573a1396f29313caabce47f4” countries: Array genres: Array runtime: 98 ... title: "Come Have Coffee with Us" SCORE: 5.790548801422119 _id: "573a13d1f29313caabd90811" plot: "From pagan re-enactors to failed communes, black metal festivals to Ar…" genres: Array runtime: 98 ... title: "A Spell to Ward Off the Darkness" SCORE: 5.7726240158081055 _id: "573a13f3f29313caabddeb07" plot: "Turkey in the 1960s and 70s was one of the biggest producers of film i…" genres: Array runtime: 96 ... title: "Remake, Remix, Rip-Off: About Copy Culture & Turkish Pop Cinema" SCORE: 5.749281883239746 _id: "573a13a9f29313caabd1ea36" fullplot: "Three unlikely, unsuspecting souls who come face-to-face with that mom…" imdb: Object year: 2004 ... title: "Benji: Off the Leash!" SCORE: 5.749281883239746 _id: "573a13d4f29313caabd98488" fullplot: "This tragicomedy is a self-ironic portrait of a young man who drops ou…" imdb: Object year: 2012 ... title: "A Coffee in Berlin" SCORE: 5.74220085144043 _id: “573a1397f29313caabce863f” fullplot: "Zack Mayo is a young man who has signed up for Navy Aviation Officer C…" imdb: Object year: 1982 ... title: "An Officer and a Gentleman" SCORE: 5.671174049377441 _id: “573a1398f29313caabce987c” plot: "After the end of the Dirty War, a high school teacher sets out to find…" genres: Array runtime: 112 ... title: "The Official Story" SCORE: 5.671174049377441 _id: “573a13a5f29313caabd14c36” plot: "The first days of WWI. Adrien, a young and handsome lieutenant, is wou…" genres: Array runtime: 135 ... title: "The Officer's Ward" SCORE: 5.671174049377441 _id: "573a13bbf29313caabd5567" countries: Array genres: Array runtime: 98 ... title: "Hands off Mississippi" SCORE: 5.534632682800293 _id: "573a1395f29313caabce18c9" plot: "In this "Romeo and Juliet" inspired Cold War satire starring, written …" genres: Array runtime: 103 ... title: "Romanoff and Juliet"
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
1 { title: 'Off Beat' }, 2 { title: 'Off the Map' }, 3 { title: 'Off and Running' }, 4 { title: 'Hands off Mississippi' }, 5 { title: 'Taking Off' }, 6 { title: 'Noises Off...' }, 7 { title: 'Brassed Off' }, 8 { title: 'Face/Off' }, 9 { title: 'Benji: Off the Leash!' }, 10 { title: 'Set It Off' }
在上述结果中,字符 off
出现在所有标题中的某个单词的左侧。
1 { title: 'Taking Off' } 2 { title: 'Noises Off...' } 3 { title: 'Brassed Off' } 4 { title: 'Face/Off' } 5 { title: 'Set It Off' } 6 { title: 'Hands off Mississippi' } 7 { title: "Ferris Bueller's Day Off" } 8 { title: 'Off Beat' } 9 { title: 'Benji: Off the Leash!' } 10 { title: 'Off the Map' }
在上述结果中,字符 off
出现在所有标题中的某个单词的右侧。
1 { title: 'Come Have Coffee with Us' }, 2 { title: 'A Spell to Ward Off the Darkness' }, 3 { title: 'Remake, Remix, Rip-Off: About Copy Culture & Turkish Pop Cinema' }, 4 { title: 'Benji: Off the Leash!' }, 5 { title: 'A Coffee in Berlin' }, 6 { title: 'An Officer and a Gentleman' }, 7 { title: 'The Official Story' }, 8 { title: "The Officer's Ward" }, 9 { title: 'Hands off Mississippi' }, 10 { title: 'Romanoff and Juliet' }
在上述结果中,字符 off
出现在标题中的不同位置。
1 { title: 'Off Beat' }, 2 { title: 'Off the Map' }, 3 { title: 'Off and Running' }, 4 { title: 'Hands off Mississippi' }, 5 { title: 'Taking Off' }, 6 { title: 'Noises Off...' }, 7 { title: 'Brassed Off' }, 8 { title: 'Face/Off' }, 9 { title: 'Benji: Off the Leash!' }, 10 { title: 'Set It Off' }
在上述结果中,字符 off
出现在所有标题中的某个单词的左侧。
1 { title: 'Taking Off' } 2 { title: 'Noises Off...' } 3 { title: 'Brassed Off' } 4 { title: 'Face/Off' } 5 { title: 'Set It Off' } 6 { title: 'Hands off Mississippi' } 7 { title: "Ferris Bueller's Day Off" } 8 { title: 'Off Beat' } 9 { title: 'Benji: Off the Leash!' } 10 { title: 'Off the Map' }
在上述结果中,字符 off
出现在所有标题中的某个单词的右侧。
1 { title: 'Come Have Coffee with Us' }, 2 { title: 'A Spell to Ward Off the Darkness' }, 3 { title: 'Remake, Remix, Rip-Off: About Copy Culture & Turkish Pop Cinema' }, 4 { title: 'Benji: Off the Leash!' }, 5 { title: 'A Coffee in Berlin' }, 6 { title: 'An Officer and a Gentleman' }, 7 { title: 'The Official Story' }, 8 { title: "The Officer's Ward" }, 9 { title: 'Hands off Mississippi' }, 10 { title: 'Romanoff and Juliet' }
在上述结果中,字符 off
出现在标题中的不同位置。
1 { "title": "Off Beat" } 2 { "title": "Off the Map" } 3 { "title": "Off and Running" } 4 { "title": "Hands off Mississippi" } 5 { "title": "Taking Off" } 6 { "title": "Noises Off..." } 7 { "title": "Brassed Off" } 8 { "title": "Face/Off" } 9 { "title": "Benji: Off the Leash!" } 10 { "title": "Set It Off" }
在上述结果中,字符 off
出现在所有标题中的某个单词的左侧。
1 { "title" : "Taking Off" } 2 { "title" : "Noises Off..." } 3 { "title" : "Brassed Off" } 4 { "title" : "Face/Off" } 5 { "title" : "Set It Off" } 6 { "title" : "Hands off Mississippi" } 7 { "title" : "Ferris Bueller's Day Off" } 8 { "title" : "Off Beat" } 9 { "title" : "Benji: Off the Leash!" } 10 { "title" : "Off the Map" }
在上述结果中,字符 off
出现在所有标题中的某个单词的右侧。
1 { "title" : "Come Have Coffee with Us" } 2 { "title" : "A Spell to Ward Off the Darkness" } 3 { "title" : "Remake, Remix, Rip-Off: About Copy Culture & Turkish Pop Cinema" } 4 { "title" : "Benji: Off the Leash!" } 5 { "title" : "A Coffee in Berlin" } 6 { "title" : "An Officer and a Gentleman" } 7 { "title" : "The Official Story" } 8 { "title" : "The Officer's Ward" } 9 { "title" : "Hands off Mississippi" } 10 { "title" : "Romanoff and Juliet" }
在上述结果中,字符 off
出现在标题中的不同位置。
1 [{title Off Beat}] 2 [{title Off the Map}] 3 [{title Off and Running}] 4 [{title Hands off Mississippi}] 5 [{title Taking Off}] 6 [{title Noises Off...}] 7 [{title Brassed Off}] 8 [{title Face/Off}] 9 [{title Benji: Off the Leash!}] 10 [{title Set It Off}]
在上述结果中,字符 off
出现在所有标题中的某个单词的左侧。
1 [{title Taking Off}] 2 [{title Noises Off...}] 3 [{title Brassed Off}] 4 [{title Face/Off}] 5 [{title Set It Off}] 6 [{title Hands off Mississippi}] 7 [{title Ferris Bueller's Day Off}] 8 [{title Off Beat}] 9 [{title Benji: Off the Leash!}] 10 [{title Off the Map}]
在上述结果中,字符 off
出现在所有标题中的某个单词的右侧。
1 [{title Come Have Coffee with Us}] 2 [{title A Spell to Ward Off the Darkness}] 3 [{title Remake, Remix, Rip-Off: About Copy Culture & Turkish Pop Cinema}] 4 [{title Benji: Off the Leash!}] 5 [{title A Coffee in Berlin}] 6 [{title An Officer and a Gentleman}] 7 [{title The Official Story}] 8 [{title The Officer's Ward}] 9 [{title Hands off Mississippi}] 10 [{title Romanoff and Juliet}]
在上述结果中,字符 off
出现在标题中的不同位置。
1 {"title": "Off Beat"} 2 {"title": "Off the Map"} 3 {"title": "Off and Running"} 4 {"title": "Hands off Mississippi"} 5 {"title": "Taking Off"} 6 {"title": "Noises Off..."} 7 {"title": "Brassed Off"} 8 {"title": "Face/Off"} 9 {"title": "Benji: Off the Leash!"} 10 {"title": "Set It Off"}
在上述结果中,字符 off
出现在所有标题中的某个单词的左侧。
1 {"title": "Taking Off"} 2 {"title": "Noises Off..."} 3 {"title": "Brassed Off"} 4 {"title": "Face/Off"} 5 {"title": "Set It Off"} 6 {"title": "Hands off Mississippi"} 7 {"title": "Ferris Bueller's Day Off"} 8 {"title": "Off Beat"} 9 {"title": "Benji: Off the Leash!"} 10 {"title": "Off the Map"}
在上述结果中,字符 off
出现在所有标题中的某个单词的右侧。
1 {"title": "Come Have Coffee with Us"} 2 {"title": "A Spell to Ward Off the Darkness"} 3 {"title": "Remake, Remix, Rip-Off: About Copy Culture & Turkish Pop Cinema"} 4 {"title": "Benji: Off the Leash!"} 5 {"title": "A Coffee in Berlin"} 6 {"title": "An Officer and a Gentleman"} 7 {"title": "The Official Story"} 8 {"title": "The Officer's Ward"} 9 {"title": "Hands off Mississippi"} 10 {"title": "Romanoff and Juliet"}
在上述结果中,字符 off
出现在标题中的不同位置。
1 Document{{title=Off Beat}} 2 Document{{title=Off the Map}} 3 Document{{title=Off and Running}} 4 Document{{title=Hands off Mississippi}} 5 Document{{title=Taking Off}} 6 Document{{title=Face/Off}} 7 Document{{title=Noises Off...}} 8 Document{{title=Brassed Off}} 9 Document{{title=Benji: Off the Leash!}} 10 Document{{title=Set It Off}}
在上述结果中,字符 off
出现在所有标题中的某个单词的左侧。
1 Document{{title=Noises Off...}} 2 Document{{title=Taking Off}} 3 Document{{title=Brassed Off}} 4 Document{{title=Face/Off}} 5 Document{{title=Set It Off}} 6 Document{{title=Hands off Mississippi}} 7 Document{{title=Ferris Bueller's Day Off}} 8 Document{{title=Off Beat}} 9 Document{{title=Benji: Off the Leash!}} 10 Document{{title=Off and Running}}
在上述结果中,字符 off
出现在所有标题中的某个单词的右侧。
1 Document{{title=Taking Off}} 2 Document{{title=Noises Off...}} 3 Document{{title=Brassed Off}} 4 Document{{title=Face/Off}} 5 Document{{title=Off Beat}} 6 Document{{title=Hands off Mississippi}} 7 Document{{title=Off the Map}} 8 Document{{title=Set It Off}} 9 Document{{title=Off and Running}} 10 Document{{title=Benji: Off the Leash!}}
在上述结果中,字符 off
出现在标题中的不同位置。
1 { title: 'Off Beat' } 2 { title: 'Off the Map' } 3 { title: 'Off and Running' } 4 { title: 'Hands off Mississippi' } 5 { title: 'Taking Off' } 6 { title: 'Noises Off...' } 7 { title: 'Brassed Off' } 8 { title: 'Face/Off' } 9 { title: 'Benji: Off the Leash!' } 10 { title: 'Set It Off' }
在上述结果中,字符 off
出现在所有标题中的某个单词的左侧。
1 { title: 'Taking Off' } 2 { title: 'Noises Off...' } 3 { title: 'Brassed Off' } 4 { title: 'Face/Off' } 5 { title: 'Set It Off' } 6 { title: 'Hands off Mississippi' } 7 { title: "Ferris Bueller's Day Off" } 8 { title: 'Off Beat' } 9 { title: 'Benji: Off the Leash!' } 10 { title: 'Off the Map' }
在上述结果中,字符 off
出现在所有标题中的某个单词的右侧。
1 { title: 'Come Have Coffee with Us' } 2 { title: 'A Spell to Ward Off the Darkness' } 3 { title: 'Remake, Remix, Rip-Off: About Copy Culture & Turkish Pop Cinema' } 4 { title: 'Benji: Off the Leash!' } 5 { title: 'A Coffee in Berlin' } 6 { title: 'An Officer and a Gentleman' } 7 { title: 'The Official Story' } 8 { title: "The Officer's Ward" } 9 { title: 'Hands off Mississippi' } 10 { title: 'Romanoff and Juliet' }
在上述结果中,字符 off
出现在标题中的不同位置。
1 {'title': 'Off Beat'} 2 {'title': 'Off the Map'} 3 {'title': 'Off and Running'} 4 {'title': 'Hands off Mississippi'} 5 {'title': 'Taking Off'} 6 {'title': 'Noises Off...'} 7 {'title': 'Brassed Off'} 8 {'title': 'Face/Off'} 9 {'title': 'Benji: Off the Leash!'} 10 {'title': 'Set It Off'}
在上述结果中,字符 off
出现在所有标题中的某个单词的左侧。
1 {'title': 'Taking Off'} 2 {'title': 'Noises Off...'} 3 {'title': 'Brassed Off'} 4 {'title': 'Face/Off'} 5 {'title': 'Set It Off'} 6 {'title': 'Hands off Mississippi'} 7 {'title': "Ferris Bueller's Day Off"} 8 {'title': 'Off Beat'} 9 {'title': 'Benji: Off the Leash!'} 10 {'title': 'Off the Map'}
在上述结果中,字符 off
出现在所有标题中的某个单词的右侧。
1 {'title': 'Come Have Coffee with Us'} 2 {'title': 'A Spell to Ward Off the Darkness'} 3 {'title': 'Remake, Remix, Rip-Off: About Copy Culture & Turkish Pop Cinema'} 4 {'title': 'Benji: Off the Leash!'} 5 {'title': 'A Coffee in Berlin'} 6 {'title': 'An Officer and a Gentleman'} 7 {'title': 'The Official Story'} 8 {'title': "The Officer's Ward"} 9 {'title': 'Hands off Mississippi'} 10 {'title': 'Romanoff and Juliet'}
在上述结果中,字符 off
出现在标题中的不同位置。
模糊示例
下面的查询会搜索 title
字段中包含字符 pre
的电影。查询使用:
字段 | 说明 |
| 表示查询字符串 |
| 表示将查询与文档中的单词进行匹配时,查询字符串 |
| 表示将查询字符串与文档中的单词进行匹配时,最多可以为 |
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { $search: { autocomplete: { path: "title", query: "pre", fuzzy: { maxEdits: 1, prefixLength: 1, maxExpansions: 256 } } } } ]
db.movies.aggregate([ { $search: { "autocomplete": { "path": "title", "query": "pre", "fuzzy": { "maxEdits": 1, "prefixLength": 1, "maxExpansions": 256 } } } }, { $limit: 10 }, { $project: { "_id": 0, "title": 1 } } ])
在 movies
集合的 Aggregations 标签页中,从下拉菜单中选择阶段并为该阶段添加查询,以配置以下每个管道阶段。单击 Add Stage 添加其他阶段。
管道阶段 | 查询 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||||
|
| |||||||||||
|
|
using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Conventions; using MongoDB.Driver; using MongoDB.Driver.Search; public class AutocompleteFuzzyExample { private const string MongoConnectionString = "<connection-string>"; public static void Main(string[] args) { // allow automapping of the camelCase database fields to our MovieDocument var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); // connect to your Atlas cluster var mongoClient = new MongoClient(MongoConnectionString); var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); // define fuzzy options SearchFuzzyOptions fuzzyOptions = new SearchFuzzyOptions() { MaxEdits = 1, PrefixLength = 1, MaxExpansions = 256 }; // define and run pipeline var results = moviesCollection.Aggregate() .Search(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "pre", fuzzy: fuzzyOptions)) .Project<MovieDocument>(Builders<MovieDocument>.Projection .Include(movie => movie.Title) .Exclude(movie => movie.Id)) .Limit(10) .ToList(); // print results foreach (var movie in results) { Console.WriteLine(movie.ToJson()); } } } [ ]public class MovieDocument { [ ] public ObjectId Id { get; set; } public string Title { get; set; } }
package main import ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { // connect to your Atlas cluster client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) if err != nil { panic(err) } defer client.Disconnect(context.TODO()) // set namespace collection := client.Database("sample_mflix").Collection("movies") // define pipeline stages searchStage := bson.D{{"$search", bson.D{{"autocomplete", bson.D{{"query", "pre"}, {"path", "title"}, {"fuzzy", bson.D{{"maxEdits", 1},{"prefixLength", 1},{"maxExpansions", 256}}}}}}}} limitStage := bson.D{{"$limit", 10}} projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}}}} // run pipeline cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage}) if err != nil { panic(err) } // print results var results []bson.D if err = cursor.All(context.TODO(), &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) } }
import static com.mongodb.client.model.Aggregates.limit; import static com.mongodb.client.model.Aggregates.project; import static com.mongodb.client.model.Projections.excludeId; import static com.mongodb.client.model.Projections.fields; import static com.mongodb.client.model.Projections.include; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import java.util.Arrays; public class AutocompleteFuzzyExample { public static void main(String[] args) { // connect to your Atlas cluster String uri = "<connection-string>"; try (MongoClient mongoClient = MongoClients.create(uri)) { // set namespace MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); // define pipeline Document agg = new Document("$search", new Document("autocomplete", new Document("query", "pre") .append("path", "title") .append("fuzzy", new Document("maxEdits", 1).append("prefixLength", 1).append("maxExpansions", 256)))); // run pipeline and print results collection.aggregate(Arrays.asList(agg, limit(10), project(fields(excludeId(), include("title"))))).forEach(doc -> System.out.println(doc.toJson())); } } }
import com.mongodb.client.model.Aggregates.limit import com.mongodb.client.model.Aggregates.project import com.mongodb.client.model.Projections.* import com.mongodb.kotlin.client.coroutine.MongoClient import kotlinx.coroutines.runBlocking import org.bson.Document fun main() { val uri = "<connection-string>" val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") val collection = database.getCollection<Document>("movies") runBlocking { val agg = Document( "\$search", Document("autocomplete", Document("query", "pre") .append("path", "title") .append("fuzzy", Document("maxEdits", 1) .append("prefixLength", 1) .append("maxExpansions", 256)) ) ) val resultsFlow = collection.aggregate<Document>( listOf( agg, limit(10), project(fields(excludeId(), include("title"))) ) ) resultsFlow.collect { println(it) } } mongoClient.close() }
const { MongoClient } = require("mongodb"); // connect to your Atlas cluster const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { await client.connect(); // set namespace const database = client.db("sample_mflix"); const coll = database.collection("movies"); // define pipeline const agg = [ {$search: {autocomplete: {query: "pre", path: "title", fuzzy: {"maxEdits": 1, "prefixLength": 1, "maxExpansions": 256}}}}, {$limit: 10}, {$project: {_id: 0,title: 1}} ]; // run pipeline const result = await coll.aggregate(agg); // print results await result.forEach((doc) => console.log(doc)); } finally { await client.close(); } } run().catch(console.dir);
import pymongo # connect to your Atlas cluster client = pymongo.MongoClient('<connection-string>') # define pipeline pipeline = [ {"$search": {"autocomplete": {"query": "pre", "path": "title", "fuzzy": {"maxEdits": 1, "prefixLength": 1, "maxExpansions": 256}}}}, {"$limit": 10}, {"$project": {"_id": 0, "title": 1}}, ] # run pipeline result = client["sample_mflix"]["movies"].aggregate(pipeline) # print results for i in result: print(i)
SCORE: 1 _id: “573a1390f29313caabcd5293” plot: "Young Pauline is left a lot of money when her wealthy uncle dies. Howe…" genres: Array runtime: 199 ... title: "The Perils of Pauline" SCORE: 1 _id: “573a1391f29313caabcd9458” plot: "A young artist draws a face at a canvas on his easel. Suddenly the mou…" genres: Array rated: "UNRATED" ... title: "The Blood of a Poet" SCORE: 1 _id: “573a1392f29313caabcda09b” plot: "Tells how King Henry VIII came to marry five more times after his divo…" genres: Array runtime: 97 ... title: "The Private Life of Henry VIII." SCORE: 1 _id: “573a1392f29313caabcda556” plot: "What do women want? Don Juan is aging. He's arrived secretly in Sevill…" genres: Array runtime: 89 ... title: "The Private Life of Don Juan" SCORE: 1 _id: “573a1392f29313caabcdaee0” plot: "The story of Dr. Samuel Mudd, who was imprisoned after innocently trea…" genres: Array runtime: 96 ... title: "The Prisoner of Shark Island" SCORE: 1 _id: “573a1392f29313caabcdb3f2” plot: "Two lookalike boys, one a poor street kid and the other a prince, exch…" genres: Array runtime: 118 ... title: "The Prince and the Pauper" SCORE: 1 _id: “573a1392f29313caabcdb3f4” plot: "An Englishman on a Ruritarian holiday must impersonate the king when t…" genres: Array runtime: 101 ... title: "The Prisoner of Zenda" SCORE: 1 _id: “573a1392f29313caabcdb505” plot: "After the death of her husband, Christine realizes she has possibly wa…" genres: Array runtime: 144 ... title: "Dance Program" SCORE: 1 _id: “573a1393f29313caabcdca58” plot: "While traveling in France during the Nazi invasion of 1940, an English…" genres: Array runtime: 87 ... title: "The Pied Piper" SCORE: 1 _id: “573a1393f29313caabcdca76” plot: "The official World War II US Government film statement defining the va…" genres: Array runtime: 87 ... title: "Prelude to War"
SCORE: 1 _id: “573a1390f29313caabcd5ea4” plot: "A District Attorney's outspoken stand on abortion gets him in trouble …" genres: Array runtime: 62 ... title: "Where Are My Children?" SCORE: 1 _id: “573a1391f29313caabcd70b4” plot: "An extended family split up in France and Germany find themselves on o…" genres: Array runtime: 150 ... title: "The Four Horsemen of the Apocalypse" SCORE: 1 _id: “573a1391f29313caabcd7850” plot: "In fifteenth century Paris, the brother of the archdeacon plots with t…" genres: Array runtime: 133 ... title: "The Hunchback of Notre Dame" SCORE: 1 _id: “573a1391f29313caabcd8cbd” plot: "A young lady from Georgia goes to Hollywood in the hopes of becoming a…" genres: Array runtime: 83 ... title: "Show People" SCORE: 1 _id: “573a1392f29313caabcd9df7” plot: "A young American man is transported back to London in the time of the …" genres: Array runtime: 84 ... title: "Berkeley Square" SCORE: 1 _id: “573a1392f29313caabcda7fb” plot: "An entertainer impersonates a look-alike banker, causing comic confusi…" genres: Array runtime: 82 ... title: "Folies Bergère de Paris" SCORE: 1 _id: “573a1393f29313caabcdc4a2” plot: "Boxer Joe Pendleton dies 50 years too soon due to a heavenly mistake, …" genres: Array runtime: 94 ... title: "Here Comes Mr. Jordan" SCORE: 1 _id: “573a1393f29313caabcdc814” plot: "An American man marries a Serbian immigrant who fears that she will tu…" genres: Array runtime: 73 ... title: "Cat People" SCORE: 1 _id: “573a1393f29313caabcdc87b” plot: "Mail author for translation. Kodos hegycsucsok, fekete fenyvesek vilag…" genres: Array runtime: 88 ... title: "People on the Alps" SCORE: 1 _id: “573a1393f29313caabcdcd39” plot: "A soldier falls for a chorus girl and then experiences trouble when he…" genres: Array runtime: 103 ... title: "The Gang's All Here"
SCORE: 1 _id: “573a1390f29313caabcd5293” plot: "Young Pauline is left a lot of money when her wealthy uncle dies. Howe…" genres: Array runtime: 199 ... title: "The Perils of Pauline" SCORE: 1 _id: “573a1390f29313caabcd5967” plot: "An intrepid reporter and his loyal friend battle a bizarre secret soci…" genres: Array runtime: 399 ... title: "Les vampires" SCORE: 1 _id: “573a1391f29313caabcd6ea2” plot: "The simple-minded son of a rich financier must find his own way in the…" genres: Array runtime: 77 ... title: "The Saphead" SCORE: 1 _id: “573a1391f29313caabcd70b4” plot: "An extended family split up in France and Germany find themselves on o…" genres: Array runtime: 150 ... title: "The Four Horsemen of the Apocalypse" SCORE: 1 _id: “573a1391f29313caabcd7b98” plot: "A bitter clown endeavors to rescue the young woman he loves from the l…" genres: Array runtime: 95 ... title: "He Who Gets Slapped" SCORE: 1 _id: “573a1391f29313caabcd806b” plot: "A mad, disfigured composer seeks love with a lovely young opera singer…" genres: Array runtime: 93 ... title: "The Phantom of the Opera" SCORE: 1 _id: “573a1391f29313caabcd8cbd” plot: "A young lady from Georgia goes to Hollywood in the hopes of becoming a…" genres: Array runtime: 83 ... title: "Show People" SCORE: 1 _id: “573a1391f29313caabcd9458” plot: "A young artist draws a face at a canvas on his easel. Suddenly the mou…" genres: Array rated: "UNRATED" ... title: "The Blood of a Poet" SCORE: 1 _id: “573a1391f29313caabcd9651” plot: "In London at the turn of the century, the bandit Mack the Knife marrie…" genres: Array runtime: 112 ... title: "The 3 Penny Opera" SCORE: 1 _id: “573a1392f29313caabcd9caa” plot: "Many passengers on the Shanghai Express are more concerned that the no…" genres: Array runtime: 82 ... title: "Shanghai Express"
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
1 { title: 'The Perils of Pauline' }, 2 { title: 'The Blood of a Poet' }, 3 { title: 'The Private Life of Henry VIII.' }, 4 { title: 'The Private Life of Don Juan' }, 5 { title: 'The Prisoner of Shark Island' }, 6 { title: 'The Prince and the Pauper' }, 7 { title: 'The Prisoner of Zenda' }, 8 { title: 'Dance Program' }, 9 { title: 'The Pied Piper' }, 10 { title: 'Prelude to War' }
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词左侧。
1 { title: 'Where Are My Children?' } 2 { title: 'The Four Horsemen of the Apocalypse' } 3 { title: 'The Hunchback of Notre Dame' } 4 { title: 'Show People' } 5 { title: 'Berkeley Square' } 6 { title: 'Folies Bergère de Paris' } 7 { title: 'Here Comes Mr. Jordan' } 8 { title: 'Cat People' } 9 { title: 'People on the Alps' } 10 { title: "The Gang's All Here" }
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词右侧。
1 { title: 'The Perils of Pauline' } 2 { title: 'Les vampires' } 3 { title: 'The Saphead' } 4 { title: 'The Four Horsemen of the Apocalypse' } 5 { title: 'He Who Gets Slapped' } 6 { title: 'The Phantom of the Opera' } 7 { title: 'Show People' } 8 { title: 'The Blood of a Poet' } 9 { title: 'The 3 Penny Opera' } 10 { title: 'Shanghai Express' }
这些结果显示了针对字符串预测的单词,并在标题单词的不同位置修改了一个字符。
1 { title: 'The Perils of Pauline' }, 2 { title: 'The Blood of a Poet' }, 3 { title: 'The Private Life of Henry VIII.' }, 4 { title: 'The Private Life of Don Juan' }, 5 { title: 'The Prisoner of Shark Island' }, 6 { title: 'The Prince and the Pauper' }, 7 { title: 'The Prisoner of Zenda' }, 8 { title: 'Dance Program' }, 9 { title: 'The Pied Piper' }, 10 { title: 'Prelude to War' }
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词左侧。
1 { title: 'Where Are My Children?' } 2 { title: 'The Four Horsemen of the Apocalypse' } 3 { title: 'The Hunchback of Notre Dame' } 4 { title: 'Show People' } 5 { title: 'Berkeley Square' } 6 { title: 'Folies Bergère de Paris' } 7 { title: 'Here Comes Mr. Jordan' } 8 { title: 'Cat People' } 9 { title: 'People on the Alps' } 10 { title: "The Gang's All Here" }
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词右侧。
1 { title: 'The Perils of Pauline' } 2 { title: 'Les vampires' } 3 { title: 'The Saphead' } 4 { title: 'The Four Horsemen of the Apocalypse' } 5 { title: 'He Who Gets Slapped' } 6 { title: 'The Phantom of the Opera' } 7 { title: 'Show People' } 8 { title: 'The Blood of a Poet' } 9 { title: 'The 3 Penny Opera' } 10 { title: 'Shanghai Express' }
这些结果显示了针对字符串预测的单词,并在标题单词的不同位置修改了一个字符。
1 { "title" : "The Perils of Pauline" } 2 { "title" : "The Blood of a Poet" } 3 { "title" : "The Private Life of Henry VIII." } 4 { "title" : "The Private Life of Don Juan" } 5 { "title" : "The Prisoner of Shark Island" } 6 { "title" : "The Prince and the Pauper" } 7 { "title" : "The Prisoner of Zenda" } 8 { "title" : "Dance Program" } 9 { "title" : "The Pied Piper" } 10 { "title" : "Prelude to War" }
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词左侧。
1 { "title" : "Where Are My Children?" } 2 { "title" : "The Four Horsemen of the Apocalypse" } 3 { "title" : "The Hunchback of Notre Dame" } 4 { "title" : "Show People" } 5 { "title" : "Berkeley Square" } 6 { "title" : "Folies Bergère de Paris" } 7 { "title" : "Here Comes Mr. Jordan" } 8 { "title" : "Cat People" } 9 { "title" : "People on the Alps" } 10 { "title" : "The Gang's All Here" }
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词右侧。
1 { "title" : "The Perils of Pauline" } 2 { "title" : "Les vampires" } 3 { "title" : "The Saphead" } 4 { "title" : "The Four Horsemen of the Apocalypse" } 5 { "title" : "He Who Gets Slapped" } 6 { "title" : "The Phantom of the Opera" } 7 { "title" : "Show People" } 8 { "title" : "The Blood of a Poet" } 9 { "title" : "The 3 Penny Opera" } 10 { "title" : "Shanghai Express" }
这些结果显示了针对字符串预测的单词,并在标题单词的不同位置修改了一个字符。
1 [{title The Perils of Pauline}] 2 [{title The Blood of a Poet}] 3 [{title The Private Life of Henry VIII.}] 4 [{title The Private Life of Don Juan}] 5 [{title The Prisoner of Shark Island}] 6 [{title The Prince and the Pauper}] 7 [{title The Prisoner of Zenda}] 8 [{title Dance Program}] 9 [{title The Pied Piper}] 10 [{title Prelude to War}]
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词左侧。
1 [{title Where Are My Children?}] 2 [{title The Four Horsemen of the Apocalypse}] 3 [{title The Hunchback of Notre Dame}] 4 [{title Show People}] 5 [{title Berkeley Square}] 6 [{title Folies Bergère de Paris}] 7 [{title Here Comes Mr. Jordan}] 8 [{title Cat People}] 9 [{title People on the Alps}] 10 [{title The Gang's All Here}]
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词右侧。
1 [{title The Perils of Pauline}] 2 [{title Les vampires}] 3 [{title The Saphead}] 4 [{title The Four Horsemen of the Apocalypse}] 5 [{title He Who Gets Slapped}] 6 [{title The Phantom of the Opera}] 7 [{title Show People}] 8 [{title The Blood of a Poet}] 9 [{title The 3 Penny Opera}] 10 [{title Shanghai Express}]
这些结果显示了针对字符串预测的单词,并在标题单词的不同位置修改了一个字符。
1 {"title": "The Perils of Pauline"} 2 {"title": "The Blood of a Poet"} 3 {"title": "The Private Life of Henry VIII."} 4 {"title": "The Private Life of Don Juan"} 5 {"title": "The Prisoner of Shark Island"} 6 {"title": "The Prince and the Pauper"} 7 {"title": "The Prisoner of Zenda"} 8 {"title": "Dance Program"} 9 {"title": "The Pied Piper"} 10 {'title': 'Prelude to War'}
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词左侧。
1 {"title": "Where Are My Children?"} 2 {"title": "The Four Horsemen of the Apocalypse"} 3 {"title": "The Hunchback of Notre Dame"} 4 {"title": "Show People"} 5 {"title": "Berkeley Square"} 6 {"title": "Folies Bergère de Paris"} 7 {"title": "Here Comes Mr. Jordan"} 8 {"title": "Cat People"} 9 {"title": "People on the Alps"} 10 {"title": "The Gang's All Here"}
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词右侧。
1 {"title": "The Perils of Pauline"} 2 {"title": "Les vampires"} 3 {"title": "The Saphead"} 4 {"title": "The Four Horsemen of the Apocalypse"} 5 {"title": "He Who Gets Slapped"} 6 {"title": "The Phantom of the Opera"} 7 {"title": "Show People"} 8 {"title": "The Blood of a Poet"} 9 {"title": "The 3 Penny Opera"} 10 {"title": "Shanghai Express"}
这些结果显示了针对字符串预测的单词,并在标题单词的不同位置修改了一个字符。
1 Document{{title=The Perils of Pauline}} 2 Document{{title=The Private Life of Henry VIII.}} 3 Document{{title=Prelude to War}} 4 Document{{title=Sitting Pretty}} 5 Document{{title=The Prisoner}} 6 Document{{title=Chi lavora è perduto (In capo al mondo)}} 7 Document{{title=Profound Desires of the Gods}} 8 Document{{title=The Protagonists}} 9 Document{{title=Property Is No Longer a Theft}} 10 Document{{title=Premiya}}
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词左侧。
1 Document{{title=The Four Horsemen of the Apocalypse}} 2 Document{{title=Folies Bergère de Paris}} 3 Document{{title=Mother Wore Tights}} 4 Document{{title=El hombre sin rostro}} 5 Document{{title=Il segno di Venere}} 6 Document{{title=Creature from the Black Lagoon}} 7 Document{{title=Susan Slept Here}} 8 Document{{title=Tell Them Willie Boy Is Here}} 9 Document{{title=Pilatus und andere - Ein Film fèr Karfreitag}} 10 Document{{title=Watch Out, We're Mad}}
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词右侧。
1 Document{{title=The Four Horsemen of the Apocalypse}} 2 Document{{title=The Private Life of Henry VIII.}} 3 Document{{title=David Copperfield}} 4 Document{{title=The Prisoner of Zenda}} 5 Document{{title=People on the Alps}} 6 Document{{title=Prelude to War}} 7 Document{{title=The Pride of the Yankees}} 8 Document{{title=Phantom of the Opera}} 9 Document{{title=The Curse of the Cat People}} 10 Document{{title=The People Against O'Hara}}
这些结果显示了针对字符串预测的单词,并在标题单词的不同位置修改了一个字符。
1 { title: 'The Perils of Pauline' } 2 { title: 'The Blood of a Poet' } 3 { title: 'The Private Life of Henry VIII.' } 4 { title: 'The Private Life of Don Juan' } 5 { title: 'The Prisoner of Shark Island' } 6 { title: 'The Prince and the Pauper' } 7 { title: 'The Prisoner of Zenda' } 8 { title: 'Dance Program' } 9 { title: 'The Pied Piper' } 10 { title: 'Prelude to War' }
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词左侧。
1 { title: 'Where Are My Children?' } 2 { title: 'The Four Horsemen of the Apocalypse' } 3 { title: 'The Hunchback of Notre Dame' } 4 { title: 'Show People' } 5 { title: 'Berkeley Square' } 6 { title: 'Folies Bergère de Paris' } 7 { title: 'Here Comes Mr. Jordan' } 8 { title: 'Cat People' } 9 { title: 'People on the Alps' } 10 { title: "The Gang's All Here" }
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词右侧。
1 { title: 'The Perils of Pauline' } 2 { title: 'Les vampires' } 3 { title: 'The Saphead' } 4 { title: 'The Four Horsemen of the Apocalypse' } 5 { title: 'He Who Gets Slapped' } 6 { title: 'The Phantom of the Opera' } 7 { title: 'Show People' } 8 { title: 'The Blood of a Poet' } 9 { title: 'The 3 Penny Opera' } 10 { title: 'Shanghai Express' }
这些结果显示了针对字符串预测的单词,并在标题单词的不同位置修改了一个字符。
1 {'title': 'The Perils of Pauline'} 2 {'title': 'The Blood of a Poet'} 3 {'title': 'The Private Life of Henry VIII.'} 4 {'title': 'The Private Life of Don Juan'} 5 {'title': 'The Prisoner of Shark Island'} 6 {'title': 'The Prince and the Pauper'} 7 {'title': 'The Prisoner of Zenda'} 8 {'title': 'Dance Program'} 9 {'title': 'The Pied Piper'} 10 {'title': 'Prelude to War'}
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词左侧。
1 {'title': 'Where Are My Children?'} 2 {'title': 'The Four Horsemen of the Apocalypse'} 3 {'title': 'The Hunchback of Notre Dame'} 4 {'title': 'Show People'} 5 {'title': 'Berkeley Square'} 6 {'title': 'Folies Bergère de Paris'} 7 {'title': 'Here Comes Mr. Jordan'} 8 {'title': 'Cat People'} 9 {'title': 'People on the Alps'} 10 {'title': "The Gang's All Here"}
这些结果显示修改一个字符后查询字符串中预测的单词,所有标题中第一个字符常量位于单词右侧。
1 {'title': 'The Perils of Pauline'} 2 {'title': 'Les vampires'} 3 {'title': 'The Saphead'} 4 {'title': 'The Four Horsemen of the Apocalypse'} 5 {'title': 'He Who Gets Slapped'} 6 {'title': 'The Phantom of the Opera'} 7 {'title': 'Show People'} 8 {'title': 'The Blood of a Poet'} 9 {'title': 'The 3 Penny Opera'} 10 {'title': 'Shanghai Express'}
这些结果显示了针对字符串预测的单词,并在标题单词的不同位置修改了一个字符。
令牌顺序示例
以下查询搜索在 title
字段中包含字符 men
with
的电影。这些查询还使用 tokenOrder
字段,该字段指定查询是按 any
顺序还是按 sequential
顺序搜索令牌。
从示例开始
您可以使用关键字分析器将 title
字段编入索引,搜索以某个术语或短语开头的电影片名。
您必须使用带有 edgeGram
分词策略的关键字分析器为该字段编制索引,才能检索以下示例查询的结果。如果您使用任何其他内置分析器对该字段建立索引,Atlas Search 不会返回任何结果,因为它不会将您的文本字段作为单个字词来建立索引。edgeGram
分词策略创建从单词左侧开始的分词。
您还必须将 foldDiacritics
设置为 true
才能返回不区分大小写的结果。如果将 foldDiacritics
设置为 false
,则查询字词的大小写必须与文档中的字词大小写完全匹配,Atlas Search 才能返回结果(如有)。
{ "mappings": { "dynamic": false, "fields": { "title": [ { "type": "stringFacet" }, { "type": "string" }, { "foldDiacritics": true, "maxGrams": 7, "minGrams": 3, "analyzer": "lucene.keyword", "tokenization": "edgeGram", "type": "autocomplete" }] } } }
以下查询搜索以 Fast &
开头的电影标题。
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { $search: { autocomplete: { path: "title", query: "Fast &", tokenOrder: "sequential" } } } ]
每个查询都包括:
using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Conventions; using MongoDB.Driver; using MongoDB.Driver.Search; public class AutocompleteTokenOrderSequentialStartsWithExample { private const string MongoConnectionString = "<connection-string>"; public static void Main(string[] args) { // allow automapping of the camelCase database fields to our MovieDocument var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); // connect to your Atlas cluster var mongoClient = new MongoClient(MongoConnectionString); var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); // define and run pipeline var results = moviesCollection.Aggregate() .Search(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "Fast &", SearchAutocompleteTokenOrder.Sequential)) .Project<MovieDocument>(Builders<MovieDocument>.Projection .Include(movie => movie.Title) .Exclude(movie => movie.Id)) .Limit(4) .ToList(); // print results foreach (var movie in results) { Console.WriteLine(movie.ToJson()); } } } [ ]public class MovieDocument { [ ] public ObjectId Id { get; set; } public string Title { get; set; } }
每个查询都包括:
package main import ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { // connect to your Atlas cluster client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) if err != nil { panic(err) } defer client.Disconnect(context.TODO()) // set namespace collection := client.Database("sample_mflix").Collection("movies") // define pipeline stages searchStage := bson.D{{"$search", bson.D{{"autocomplete", bson.D{{"query", "Fast &"}, {"path", "title"}, {"tokenOrder", "sequential"}}}}}} limitStage := bson.D{{"$limit", 4}} projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}}}} // run pipeline cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage}) if err != nil { panic(err) } // print results var results []bson.D if err = cursor.All(context.TODO(), &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) } }
每个查询都包括:
import static com.mongodb.client.model.Aggregates.limit; import static com.mongodb.client.model.Aggregates.project; import static com.mongodb.client.model.Projections.excludeId; import static com.mongodb.client.model.Projections.fields; import static com.mongodb.client.model.Projections.include; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import java.util.Arrays; public class AutocompleteStartsWith { public static void main(String[] args) { // connect to your Atlas cluster String uri = "<connection-string>"; try (MongoClient mongoClient = MongoClients.create(uri)) { // set namespace MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); // define pipeline Document agg = new Document("$search", new Document("autocomplete", new Document("query", "Fast &").append("path", "title").append("tokenOrder", "sequential"))); // run pipeline and print results collection.aggregate(Arrays.asList(agg, limit(4), project(fields(excludeId(), include("title"))))).forEach(doc -> System.out.println(doc.toJson())); } } }
每个查询都包括:
import com.mongodb.client.model.Aggregates.limit import com.mongodb.client.model.Aggregates.project import com.mongodb.client.model.Projections.* import com.mongodb.kotlin.client.coroutine.MongoClient import kotlinx.coroutines.runBlocking import org.bson.Document fun main() { val uri = "<connection-string>" val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") val collection = database.getCollection<Document>("movies") runBlocking { val agg = Document( "\$search", Document( "autocomplete", Document("query", "Fast &") .append("path", "title") .append("tokenOrder", "sequential") ) ) val resultsFlow = collection.aggregate<Document>( listOf( agg, limit(4), project(fields(excludeId(), include("title"))) ) ) resultsFlow.collect { println(it) } } mongoClient.close() }
每个查询都包括:
const { MongoClient } = require("mongodb"); // connect to your Atlas cluster const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { await client.connect(); // set namespace const database = client.db("sample_mflix"); const coll = database.collection("movies"); // define pipeline const agg = [ {$search: {autocomplete: {query: "Fast &", path: "title", tokenOrder: "sequential"}}}, {$limit: 4}, {$project: {_id: 0,title: 1}} ]; // run pipeline const result = await coll.aggregate(agg); // print results await result.forEach((doc) => console.log(doc)); } finally { await client.close(); } } run().catch(console.dir);
每个查询都包括:
import pymongo # connect to your Atlas cluster client = pymongo.MongoClient('<connection-string>') # define pipeline pipeline = [ {"$search": {"autocomplete": {"query": "men with", "path": "title", "tokenOrder": "sequential"}}}, {"$limit": 4}, {"$project": {"_id": 0, "title": 1}}, ] # run pipeline result = client["sample_mflix"]["movies"].aggregate(pipeline) # print results for i in result: print(i)
SCORE: 10.042893409729004 _id: “573a13bdf29313caabd5929f” fullplot: "Heading back to the streets where it all began, two men rejoin two wom…" imdb: Object year: 2009 ... title: "Fast & Furious" SCORE: 9.515419006347656 _id: “573a13d3f29313caabd95cc5” fullplot: "Since Dom (Diesel) and Brian's (Walker) Rio heist toppled a kingpin's …" imdb: Object year: 2013 ... title "Fast & Furious 6"
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
1 { title: 'Fast & Furious' }, 2 { title: 'Fast & Furious 6' }
1 { title: 'Fast & Furious' }, 2 { title: 'Fast & Furious 6' }
1 { "title" : "Fast & Furious" } 2 { "title" : "Fast & Furious 6" }
1 [{title Fast & Furious}] 2 [{title Fast & Furious 6}]
1 {"title": "Fast & Furious"} 2 {"title": "Fast & Furious 6"}
1 Document{{title=Fast & Furious}} 2 Document{{title=Fast & Furious 6}}
1 { title: 'Fast & Furious' } 2 { title: 'Fast & Furious 6' }
1 {'title': 'Fast & Furious'} 2 {'title': 'Fast & Furious 6'}
简单的 any
示例
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { $search: { autocomplete: { path: "title", query: "men with", tokenOrder: "any" } } } ]
每个查询都包括:
using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Conventions; using MongoDB.Driver; using MongoDB.Driver.Search; public class AutocompleteTokenOrderAnyExample { private const string MongoConnectionString = "<connection-string>"; public static void Main(string[] args) { // allow automapping of the camelCase database fields to our MovieDocument var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); // connect to your Atlas cluster var mongoClient = new MongoClient(MongoConnectionString); var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); // define and run pipeline var results = moviesCollection.Aggregate() .Search(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "men with", SearchAutocompleteTokenOrder.Any)) .Project<MovieDocument>(Builders<MovieDocument>.Projection .Include(movie => movie.Title) .Exclude(movie => movie.Id)) .Limit(4) .ToList(); // print results foreach (var movie in results) { Console.WriteLine(movie.ToJson()); } } } [ ]public class MovieDocument { [ ] public ObjectId Id { get; set; } public string Title { get; set; } }
每个查询都包括:
package main import ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { // connect to your Atlas cluster client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) if err != nil { panic(err) } defer client.Disconnect(context.TODO()) // set namespace collection := client.Database("sample_mflix").Collection("movies") // define pipeline stages searchStage := bson.D{{"$search", bson.D{{"autocomplete", bson.D{{"query", "men with"}, {"path", "title"}, {"tokenOrder", "any"}}}}}} limitStage := bson.D{{"$limit", 4}} projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}}}} // run pipeline cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage}) if err != nil { panic(err) } // print results var results []bson.D if err = cursor.All(context.TODO(), &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) } }
每个查询都包括:
import static com.mongodb.client.model.Aggregates.limit; import static com.mongodb.client.model.Aggregates.project; import static com.mongodb.client.model.Projections.excludeId; import static com.mongodb.client.model.Projections.fields; import static com.mongodb.client.model.Projections.include; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import java.util.Arrays; public class AutocompleteTokenAny { public static void main(String[] args) { // connect to your Atlas cluster String uri = "<connection-string>"; try (MongoClient mongoClient = MongoClients.create(uri)) { // set namespace MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); // define pipeline Document agg = new Document("$search", new Document("autocomplete", new Document("query", "men with").append("path", "title").append("tokenOrder", "any"))); // run pipeline and print results collection.aggregate(Arrays.asList(agg, limit(4), project(fields(excludeId(), include("title"))))).forEach(doc -> System.out.println(doc.toJson())); } } }
每个查询都包括:
import com.mongodb.client.model.Aggregates.limit import com.mongodb.client.model.Aggregates.project import com.mongodb.client.model.Projections.* import com.mongodb.kotlin.client.coroutine.MongoClient import kotlinx.coroutines.runBlocking import org.bson.Document fun main() { val uri = "<connection-string>" val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") val collection = database.getCollection<Document>("movies") runBlocking { val agg = Document( "\$search", Document("autocomplete", Document("query", "men with") .append("path", "title") .append("tokenOrder", "any")) ) val resultsFlow = collection.aggregate<Document>( listOf( agg, limit(4), project(fields(excludeId(), include("title"))) ) ) resultsFlow.collect { println(it) } } mongoClient.close() }
每个查询都包括:
const { MongoClient } = require("mongodb"); // connect to your Atlas cluster const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { await client.connect(); // set namespace const database = client.db("sample_mflix"); const coll = database.collection("movies"); // define pipeline const agg = [ {$search: {autocomplete: {query: "men with", path: "title", tokenOrder: "any"}}}, {$limit: 4}, {$project: {_id: 0,title: 1}} ]; // run pipeline const result = await coll.aggregate(agg); // print results await result.forEach((doc) => console.log(doc)); } finally { await client.close(); } } run().catch(console.dir);
每个查询都包括:
import pymongo # connect to your Atlas cluster client = pymongo.MongoClient('<connection-string>') # define pipeline pipeline = [ {"$search": {"autocomplete": {"query": "men with", "path": "title", "tokenOrder": "any"}}}, {"$limit": 4}, {"$project": {"_id": 0, "title": 1}}, ] # run pipeline result = client["sample_mflix"]["movies"].aggregate(pipeline) # print results for i in result: print(i)
SCORE: 21.18158721923828 _id: “573a139af29313caabcf0b12” plot: "Humberto Fuentes is a wealthy doctor whose wife has recently died. In …" genres: Array runtime: 127 ... title: "Men with Guns" SCORE: 21.18158721923828 _id: “573a13a4f29313caabd1287f” plot: "Paul Gross stars as the leader of a recently reunited curling team fro…" genres: Array runtime: 102 ... title: "Men with Brooms" SCORE: 19.015962600708008 _id: “573a1391f29313caabcd93a3” plot: "Navy divers clear the torpedo tube of a sunken submarine." genres: Array runtime: 77 ... title: "Men Without Women" SCORE: 11.215812683105469 _id: “573a13b8f29313caabd4bcbf” plot: "A graduate student (Nicholson) copes with a recent breakup by conducti…" genres: Array runtime: 80 ... title: "Brief Interviews with Hideous Men" SCORE: 10.668076515197754 _id: “573a13c9f29313caabd7ba99” plot: "The women of a remote Latin American town are forced to pick up the pi…"" genres: Array runtime: 87 ... title: "Without Men" SCORE: 10.106664657592773 _id: “573a13c8f29313caabd77ab6” plot: "Against the tumultuous backdrop of Iran's 1953 CIA-backed coup d'ètat,…" genres: Array runtime: 95 ... title: "Women Without Men" SCORE: 7.458737373352051 _id: “573a1398f29313caabce9a19” plot: "A man's wife leaves him to take up with an artist, so the man responds…" genres: Array runtime: 99 ... title: "Men..." SCORE: 7.405402183532715 _id: “573a13f2f29313caabdde0b4” plot: "Men and Chicken is a black comedy about two outcast brothers, who by g…" genres: Array runtime: 104 ... title: "Men & Chicken" SCORE: 7.2005205154418945 _id: “573a1394f29313caabce06c3” plot: "During the Korean War, a battle worn Lt. and his platoon behind enemy …" genres: Array runtime: 102 ... title: "Men in War" SCORE: 7.2005205154418945 _id: “573a1399f29313caabcec167” plot: "A mother of two sons finds life considerably difficult on her own afte…" genres: Array runtime: 115 ... title: "Men Don't Leave"
SCORE: 19.302995681762695 _id: “573a139af29313caabcf0b12” plot: "Humberto Fuentes is a wealthy doctor whose wife has recently died. In …" genres: Array runtime: 127 ... title: "Men with Guns" SCORE: 19.302995681762695 _id: “573a13a4f29313caabd1287f” plot: "Paul Gross stars as the leader of a recently reunited curling team fro…" genres: Array runtime: 102 ... title: "Men with Brooms" SCORE: 13.835155487060547 _id: “573a1399f29313caabcee64e” plot: "A thief's son cons his father into spending more time with him." genres: Array runtime: 109 ... title: "Getting Even with Dad" SCORE: 13.309324264526367 _id: “573a13cdf29313caabd844f5” plot: "Since his beloved violin was broken, Nasser Ali Khan, one of the most …" genres: Array runtime: 93 ... title: "Chicken with Plums" SCORE: 12.078420639038086 _id: “573a13b8f29313caabd4bcbf” plot: "A graduate student (Nicholson) copes with a recent breakup by conducti…" genres: Array runtime: 80 ... title: "Brief Interviews with Hideous Men" SCORE: 10.180097579956055 _id: “573a13b2f29313caabd3ab9b” fullplot: "A man runs into a woman at a wedding. They start to flirt and talk and…" imdb: Object year: 2005 ... title: "Conversations with Other Women" SCORE: 7.147367477416992 _id: “573a1398f29313caabce9a19” plot: "A man's wife leaves him to take up with an artist, so the man responds…" genres: Array runtime: 99 ... title: "Men..." SCORE: 7.054648399353027 _id: “573a1394f29313caabcde7cc” plot: "Paralized war vet tries to adjust to the world without the use of his …" genres: Array runtime: 85 ... title: "The Men" SCORE: 7.054648399353027 _id: “573a1399f29313caabced53c” plot: "Bitter about being double-crossed by the women he loved, (and with the…" genres: Array runtime: 105 ... title: "Simple Men" SCORE: 7.054648399353027 _id: “573a139af29313caabcf0f51” fullplot: "In a world where both Mutants and Humans fear each other, Marie, bette…" imdb: Object year: 2000 ... title: "X-Men"
SCORE: 16.18875503540039 _id: “573a1391f29313caabcd93a3” plot: "Navy divers clear the torpedo tube of a sunken submarine." genres: Array runtime: 77 ... title: "Men Without Women" SCORE: 15.995916366577148 _id: “573a139af29313caabcf0b12” plot: "Humberto Fuentes is a wealthy doctor whose wife has recently died. In …" genres: Array runtime: 127 ... title: "Men with Guns" SCORE: 15.995916366577148 _id: “573a13a4f29313caabd1287f” plot: "Paul Gross stars as the leader of a recently reunited curling team fro…" genres: Array runtime: 102 ... title: "Men with Brooms" SCORE: 15.642412185668945 _id: “573a13c8f29313caabd77ab6” plot: "Against the tumultuous backdrop of Iran's 1953 CIA-backed coup d'ètat,…" genres: Array runtime: 95 ... title: "Women Without Men" SCORE: 8.15120792388916 _id: “573a13b8f29313caabd4bcbf” plot: "A graduate student (Nicholson) copes with a recent breakup by conducti…" genres: Array runtime: 80 ... title: "Brief Interviews with Hideous Men" SCORE: 8.118724822998047 _id: “573a13b2f29313caabd3ab9b” fullplot: "A man runs into a woman at a wedding. They start to flirt and talk and…" imdb: Object year: 2005 ... title: "Conversations with Other Women" SCORE: 8.048237800598145 _id: “573a13a5f29313caabd138ca” plot: "This documentary, first shown on the Turner Classic Movies cable chann…" genres: Array runtime: 56 ... title: "Without Lying Down: Frances Marion and the Power of Women in Hollywood" SCORE: 7.620831489562988 _id: “573a13c9f29313caabd7ba99” plot: "The women of a remote Latin American town are forced to pick up the pi…"" genres: Array runtime: 87 ... title: "Without Men" SCORE: 4.35431432723999 _id: “573a1393f29313caabcdcd9d” plot: "A young Canadian nurse (Betsy) comes to the West Indies to care for Je…" genres: Array runtime: 69 ... title: "I Walked with a Zombie" SCORE: 4.35431432723999 _id: “573a1393f29313caabcdd9c7” plot: "Political intrigue and psychological drama run parallel. The queen is …" genres: Array runtime: 93 ... title: "The Eagle with Two Heads"
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Men Without Women' } 4 { title: 'Brief Interviews with Hideous Men' }
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Getting Even with Dad' } 4 { title: 'Chicken with Plums' }
1 { title: 'Men Without Women' } 2 { title: 'Men with Guns' } 3 { title: 'Men with Brooms' } 4 { title: 'Women Without Men' }
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Men Without Women' } 4 { title: 'Brief Interviews with Hideous Men' }
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Getting Even with Dad' } 4 { title: 'Chicken with Plums' }
1 { title: 'Men Without Women' } 2 { title: 'Men with Guns' } 3 { title: 'Men with Brooms' } 4 { title: 'Women Without Men' }
1 { "title" : "Men with Guns" } 2 { "title" : "Men with Brooms" } 3 { "title" : "Men Without Women" } 4 { "title" : "Brief Interviews with Hideous Men" }
1 { "title" : "Men with Guns" } 2 { "title" : "Men with Brooms" } 3 { "title" : "Getting Even with Dad" } 4 { "title" : "Chicken with Plums" }
1 { "title" : "Men Without Women" } 2 { "title" : "Men with Guns" } 3 { "title" : "Men with Brooms" } 4 { "title" : "Women Without Men" }
1 [{title Men with Guns}] 2 [{title Men with Brooms}] 3 [{title Men Without Women}] 4 [{title Brief Interviews with Hideous Men}]
1 [{title Men with Guns}] 2 [{title Men with Brooms}] 3 [{title Getting Even with Dad}] 4 [{title Chicken with Plums}]
1 [{title Men Without Women}] 2 [{title Men with Guns}] 3 [{title Men with Brooms}] 4 [{title Women Without Men}]
1 {"title": "Men with Guns"} 2 {"title": "Men with Brooms"} 3 {"title": "Men Without Women"} 4 {"title": "Brief Interviews with Hideous Men"}
1 {"title": "Men with Guns"} 2 {"title": "Men with Brooms"} 3 {"title": "Getting Even with Dad"} 4 {"title": "Chicken with Plums"}
1 {"title": "Men Without Women"} 2 {"title": "Men with Guns"} 3 {"title": "Men with Brooms"} 4 {"title": "Women Without Men"}
1 Document{{title=Men with Brooms}} 2 Document{{title=Men with Guns}} 3 Document{{title=Men Without Women}} 4 Document{{title=Brief Interviews with Hideous Men}}
1 Document{{title=Men with Brooms}} 2 Document{{title=Men with Guns}} 3 Document{{title=Getting Even with Dad}} 4 Document{{title=Chicken with Plums}}
1 Document{{title=Men with Guns}} 2 Document{{title=Men with Brooms}} 3 Document{{title=Men Without Women}} 4 Document{{title=Women Without Men}}
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Men Without Women' } 4 { title: 'Brief Interviews with Hideous Men' }
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Getting Even with Dad' } 4 { title: 'Chicken with Plums' }
1 { title: 'Men Without Women' } 2 { title: 'Men with Guns' } 3 { title: 'Men with Brooms' } 4 { title: 'Women Without Men' }
1 {'title': 'Men with Guns'} 2 {'title': 'Men with Brooms'} 3 {'title': 'Men Without Women'} 4 {'title': 'Brief Interviews with Hideous Men'}
1 {'title': 'Men with Guns'} 2 {'title': 'Men with Brooms'} 3 {'title': 'Getting Even with Dad'} 4 {'title': 'Chicken with Plums'}
1 {'title': 'Men Without Women'} 2 {'title': 'Men with Brooms'} 3 {'title': 'Women Without Men'} 4 {'title': 'Men with Guns'}
简单的 sequential
示例
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { $search: { autocomplete: { path: "title", query: "men with", tokenOrder: "sequential" } } } ]
每个查询都包括:
using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Conventions; using MongoDB.Driver; using MongoDB.Driver.Search; public class AutocompleteTokenOrderSequentialSimpleExample { private const string MongoConnectionString = "<connection-string>"; public static void Main(string[] args) { // allow automapping of the camelCase database fields to our MovieDocument var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); // connect to your Atlas cluster var mongoClient = new MongoClient(MongoConnectionString); var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); // define and run pipeline var results = moviesCollection.Aggregate() .Search(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "men with", SearchAutocompleteTokenOrder.Sequential)) .Project<MovieDocument>(Builders<MovieDocument>.Projection .Include(movie => movie.Title) .Exclude(movie => movie.Id)) .Limit(4) .ToList(); // print results foreach (var movie in results) { Console.WriteLine(movie.ToJson()); } } } [ ]public class MovieDocument { [ ] public ObjectId Id { get; set; } public string Title { get; set; } }
每个查询都包括:
package main import ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { // connect to your Atlas cluster client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) if err != nil { panic(err) } defer client.Disconnect(context.TODO()) // set namespace collection := client.Database("sample_mflix").Collection("movies") // define pipeline stages searchStage := bson.D{{"$search", bson.D{{"autocomplete", bson.D{{"query", "men with"}, {"path", "title"}, {"tokenOrder", "sequential"}}}}}} limitStage := bson.D{{"$limit", 4}} projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"_id", 0}}}} // run pipeline cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage}) if err != nil { panic(err) } // print results var results []bson.D if err = cursor.All(context.TODO(), &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) } }
每个查询都包括:
import static com.mongodb.client.model.Aggregates.limit; import static com.mongodb.client.model.Aggregates.project; import static com.mongodb.client.model.Projections.excludeId; import static com.mongodb.client.model.Projections.fields; import static com.mongodb.client.model.Projections.include; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import java.util.Arrays; public class AutocompleteTokenSequential { public static void main(String[] args) { // connect to your Atlas cluster String uri = "<connection-string>"; try (MongoClient mongoClient = MongoClients.create(uri)) { // set namespace MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); // define pipeline Document agg = new Document("$search", new Document("autocomplete", new Document("query", "men with").append("path", "title").append("tokenOrder", "sequential"))); // run pipeline and print results collection.aggregate(Arrays.asList(agg, limit(4), project(fields(excludeId(), include("title"))))).forEach(doc -> System.out.println(doc.toJson())); } } }
每个查询都包括:
import com.mongodb.client.model.Aggregates.limit import com.mongodb.client.model.Aggregates.project import com.mongodb.client.model.Projections.* import com.mongodb.kotlin.client.coroutine.MongoClient import kotlinx.coroutines.runBlocking import org.bson.Document fun main() { val uri = "<connection-string>" val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") val collection = database.getCollection<Document>("movies") runBlocking { val agg = Document( "\$search", Document( "autocomplete", Document("query", "men with") .append("path", "title") .append("tokenOrder", "sequential") ) ) val resultsFlow = collection.aggregate<Document>( listOf( agg, limit(4), project(fields(excludeId(), include("title"))) ) ) resultsFlow.collect { println(it) } } mongoClient.close() }
每个查询都包括:
const { MongoClient } = require("mongodb"); // connect to your Atlas cluster const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { await client.connect(); // set namespace const database = client.db("sample_mflix"); const coll = database.collection("movies"); // define pipeline const agg = [ {$search: {autocomplete: {query: "men with", path: "title", tokenOrder: "sequential"}}}, {$limit: 4}, {$project: {_id: 0,title: 1}} ]; // run pipeline const result = await coll.aggregate(agg); // print results await result.forEach((doc) => console.log(doc)); } finally { await client.close(); } } run().catch(console.dir);
每个查询都包括:
import pymongo # connect to your Atlas cluster client = pymongo.MongoClient('<connection-string>') # define pipeline pipeline = [ {"$search": {"autocomplete": {"query": "men with", "path": "title", "tokenOrder": "sequential"}}}, {"$limit": 4}, {"$project": {"_id": 0, "title": 1}}, ] # run pipeline result = client["sample_mflix"]["movies"].aggregate(pipeline) # print results for i in result: print(i)
SCORE: 12.644559860229492 _id: “573a139af29313caabcf0b12” plot: "Humberto Fuentes is a wealthy doctor whose wife has recently died. In …" genres: Array runtime: 127 ... title: "Men with Guns" SCORE: 12.644559860229492 _id: “573a13a4f29313caabd1287f” plot: "Paul Gross stars as the leader of a recently reunited curling team fro…" genres: Array runtime: 102 ... title: "Men with Brooms" SCORE: 7.997925281524658 _id: “573a1391f29313caabcd93a3” plot: "Navy divers clear the torpedo tube of a sunken submarine." genres: Array runtime: 77 ... title: "Men Without Women"
SCORE: 11.758549690246582 _id: “573a139af29313caabcf0b12” plot: "Humberto Fuentes is a wealthy doctor whose wife has recently died. In …" genres: Array runtime: 127 ... title: "Men with Guns" SCORE: 11.758549690246582 _id: “573a13a4f29313caabd1287f” plot: "Paul Gross stars as the leader of a recently reunited curling team fro…" genres: Array runtime: 102 ... title: "Men with Brooms" SCORE: 7.70704460144043 _id: “573a1399f29313caabcee64e” plot: "A thief's son cons his father into spending more time with him." genres: Array runtime: 109 ... title: "Getting Even with Dad" SCORE: 7.111915588378906 _id: “573a13cdf29313caabd844f5” plot: "Since his beloved violin was broken, Nasser Ali Khan, one of the most …" genres: Array runtime: 93 ... title: "Chicken with Plums"
SCORE: 7.928277015686035 _id: “573a1391f29313caabcd93a3” plot: "Navy divers clear the torpedo tube of a sunken submarine." genres: Array runtime: 77 ... title: "Men Without Women" SCORE: 7.928277015686035 _id: “573a139af29313caabcf0b12” plot: "Humberto Fuentes is a wealthy doctor whose wife has recently died. In …" genres: Array runtime: 127 ... title: "Men with Guns" SCORE: 7.928277015686035 _id: “573a13a4f29313caabd1287f” plot: "Paul Gross stars as the leader of a recently reunited curling team fro…" genres: Array runtime: 102 ... title: "Men with Brooms" SCORE: 7.381933212280273 _id: “573a13c8f29313caabd77ab6” plot: "Against the tumultuous backdrop of Iran's 1953 CIA-backed coup d'ètat,…" genres: Array runtime: 95 ... title: "Women Without Men"
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
1 { title: 'Men with Guns' }, 2 { title: 'Men with Brooms' }, 3 { title: 'Men Without Women' }
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Getting Even with Dad' } 4 { title: 'Chicken with Plums' }
1 { title: 'Men Without Women' }, 2 { title: 'Men with Guns' }, 3 { title: 'Men with Brooms' }, 4 { title: 'Women Without Men' }
1 { title: 'Men with Guns' }, 2 { title: 'Men with Brooms' }, 3 { title: 'Men Without Women' }
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Getting Even with Dad' } 4 { title: 'Chicken with Plums' }
1 { title: 'Men Without Women' }, 2 { title: 'Men with Guns' }, 3 { title: 'Men with Brooms' }, 4 { title: 'Women Without Men' }
1 {"title": "Men with Guns"} 2 {"title": "Men with Brooms"} 3 {"title": "Men Without Women"}
1 { "title" : "Men with Guns" } 2 { "title" : "Men with Brooms" } 3 { "title" : "Getting Even with Dad" } 4 { "title" : "Chicken with Plums" }
1 { "title" : "Men Without Women" } 2 { "title" : "Men with Guns" } 3 { "title" : "Men with Brooms" } 4 { "title" : "Women Without Men" }
1 [{title Men with Guns}] 2 [{title Men with Brooms}] 3 [{title Men Without Women}]
1 [{title Men with Guns}] 2 [{title Men with Brooms}] 3 [{title Getting Even with Dad}] 4 [{title Chicken with Plums}]
1 [{title Men Without Women}] 2 [{title Men with Guns}] 3 [{title Men with Brooms}] 4 [{title Women Without Men}]
1 {"title": "Men with Guns"} 2 {"title": "Men with Brooms"} 3 {"title": "Men Without Women"}
1 { "title" : "Men with Guns" } 2 { "title" : "Men with Brooms" } 3 { "title" : "Getting Even with Dad" } 4 { "title" : "Chicken with Plums" }
1 {"title": "Men Without Women"} 2 {"title": "Men with Guns"} 3 {"title": "Men with Brooms"} 4 {"title": "Women Without Men"}
1 Document{{title=Men with Brooms}} 2 Document{{title=Men with Guns}} 3 Document{{title=Men Without Women}}
1 Document{{title=Men with Brooms}} 2 Document{{title=Men with Guns}} 3 Document{{title=Getting Even with Dad}} 4 Document{{title=Chicken with Plums}}
1 Document{{title=Men with Guns}} 2 Document{{title=Men with Brooms}} 3 Document{{title=Men Without Women}} 4 Document{{title=Women Without Men}}
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Men Without Women' }
1 { title: 'Men with Guns' } 2 { title: 'Men with Brooms' } 3 { title: 'Getting Even with Dad' } 4 { title: 'Chicken with Plums' }
1 { title: 'Men Without Women' } 2 { title: 'Men with Guns' } 3 { title: 'Men with Brooms' } 4 { title: 'Women Without Men' }
1 {'title': 'Men with Guns'} 2 {'title': 'Men with Brooms'} 3 {'title': 'Men Without Women'}
1 {'title': 'Men with Guns'} 2 {'title': 'Men with Brooms'} 3 {'title': 'Getting Even with Dad'} 4 {'title': 'Chicken with Plums'}
1 {'title': 'Men Without Women'} 2 {'title': 'Men with Guns'} 3 {'title': 'Men with Brooms'} 4 {'title': 'Women Without Men'}
突出显示示例
以下查询在movies
集合的 title
字段中搜索 ger
字符,并为 title
字段启用了 highlight
选项。
重要
要突出显示 autocomplete 已索引版本的路径,autocomplete 运算符必须是唯一在此查询中使用该路径的运算符。
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { $search: { autocomplete: { path: "title", query: "ger" }, highlight: { path: "title" } } } ]
查询包括:
db.movies.aggregate([ { $search: { "autocomplete": { "path": "title", "query": ["ger"] }, "highlight": { "path": "title" } } }, { $limit: 5 }, { $project: { "score": { $meta: "searchScore" }, "title": 1, "_id": 0, "highlights": { "$meta": "searchHighlights" } } } ])
查询包括:
在 movies
集合的 Aggregations 标签页中,从下拉菜单中选择阶段并为该阶段添加查询,以配置以下每个管道阶段。单击 Add Stage 添加其他阶段。
管道阶段 | 查询 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||
|
| |||||||||
|
|
查询包括:
using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Conventions; using MongoDB.Driver; using MongoDB.Driver.Search; public class AutocompleteHighlightExample { private const string MongoConnectionString = "<connection-string>"; public static void Main(string[] args) { // allow automapping of the camelCase database fields to our MovieDocument var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); // connect to your Atlas cluster var mongoClient = new MongoClient(MongoConnectionString); var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); // define and run pipeline var results = moviesCollection.Aggregate() .Search(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "ger"), new SearchHighlightOptions<MovieDocument>(movie => movie.Title)) .Project<MovieDocument>(Builders<MovieDocument>.Projection .Include(movie => movie.Title) .Exclude(movie => movie.Id) .MetaSearchScore(movie => movie.Score) .MetaSearchHighlights("highlights")) .Limit(5) .ToList(); // print results foreach (var movie in results) { Console.WriteLine(movie.ToJson()); } } } [ ]public class MovieDocument { [ ] public ObjectId Id { get; set; } public string Title { get; set; } [ ] public List<SearchHighlight> Highlights { get; set; } public double Score { get; set; } }
查询包括:
package main import ( "context" "fmt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { // connect to your Atlas cluster client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) if err != nil { panic(err) } defer client.Disconnect(context.TODO()) // set namespace collection := client.Database("sample_mflix").Collection("movies") // define pipeline stages searchStage := bson.D{{"$search", bson.D{{"autocomplete", bson.M{"query": "ger","path": "title"}}, {"highlight", bson.D{{"path", "title"}}}}}} limitStage := bson.D{{"$limit", 5}} projectStage := bson.D{{"$project", bson.D{{"score", bson.D{{"$meta", "searchScore"}}}, {"title", 1}, {"_id", 0}, {"highlight", bson.D{{"$meta", "searchHighlights"}}}}}} // run pipeline cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage}) if err != nil { panic(err) } // print results var results []bson.D if err = cursor.All(context.TODO(), &results); err != nil { panic(err) } for _, result := range results { fmt.Println(result) } }
查询包括:
import static com.mongodb.client.model.Aggregates.limit; import static com.mongodb.client.model.Aggregates.project; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import java.util.Arrays; public class AutocompleteHighlight { public static void main(String[] args) { // connect to your Atlas cluster String uri = "<connection-string>"; try (MongoClient mongoClient = MongoClients.create(uri)) { // set namespace MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); // define pipeline Document agg = new Document("$search", new Document("autocomplete", new Document("path", "title").append("query", Arrays.asList("ger"))) .append("highlight", new Document("path", "title"))); // run pipeline and print results collection.aggregate(Arrays.asList(agg, limit(5), project(Document.parse("{score: {$meta: 'searchScore'}, _id: 0, title: 1, highlights: {$meta: 'searchHighlights'}}")))) .forEach(doc -> System.out.println(doc.toJson())); } } }
查询包括:
import com.mongodb.client.model.Aggregates.limit import com.mongodb.client.model.Aggregates.project import com.mongodb.client.model.Projections.* import com.mongodb.kotlin.client.coroutine.MongoClient import kotlinx.coroutines.runBlocking import org.bson.Document fun main() { val uri = "<connection-string>" val mongoClient = MongoClient.create(uri) val database = mongoClient.getDatabase("sample_mflix") val collection = database.getCollection<Document>("movies") runBlocking { val agg = Document( "\$search", Document("autocomplete", Document("path", "title") .append("query", listOf("ger")) ).append("highlight", Document("path", "title")) ) val resultsFlow = collection.aggregate<Document>( listOf( agg, limit(5), project(fields( excludeId(), include("title"), computed("score", Document("\$meta", "searchScore")), computed("highlights", Document("\$meta", "searchHighlights")) )) ) ) resultsFlow.collect { println(it) } } mongoClient.close() }
查询包括:
const { MongoClient } = require("mongodb"); // connect to your Atlas cluster const uri = "<connection-string>"; const client = new MongoClient(uri); async function run() { try { await client.connect(); // set namespace const database = client.db("sample_mflix"); const coll = database.collection("movies"); // define pipeline const agg = [ {$search: {autocomplete: {query: "ger", path: "title"}, highlight:{path: "title"}}}, {$limit: 5}, {$project: {score: {$meta: "searchScore"}, _id: 0,title: 1, highlights: {$meta: "searchHighlights"}}} ]; // run pipeline const result = coll.aggregate(agg); // print results result.forEach((doc) => console.dir(JSON.stringify(doc))); } finally { await client.close(); } } run().catch(console.dir);
查询包括:
import pymongo # connect to your Atlas cluster client = pymongo.MongoClient('<connection-string>') # define pipeline pipeline = [ {"$search":{"autocomplete": {"query": "ger", "path": "title"}, "highlight": {"path": "title"}}}, {"$limit": 5}, {"$project": {"score": {"$meta": "searchScore"},"_id": 0, "title": 1, "highlights": {"$meta": "searchHighlights"}}}, ] # run pipeline result = client["sample_mflix"]["movies"].aggregate(pipeline) # print results for i in result: print(i)
SCORE: 6.0822906494140625 _id: “573a1390f29313caabcd50e5” Gertie the Dinosaur Matching fields: title SCORE: 6.0822906494140625 _id: “573a1393f29313caabcddae1” Germany Year Zero Matching fields: title SCORE: 6.0822906494140625 _id: “573a1397f29313caabce6b75” Germany in Autumn Matching fields: title SCORE: 6.0822906494140625 _id: “573a1397f29313caabce77b5” Germany Pale Mother Matching fields: title SCORE: 6.0822906494140625 _id: “573a13d4f29313caabd99fa2” Gerhard Richter - Painting Matching fields: title SCORE: 6.018838405609131 _id: “573a1399f29313caabcedb50” Geronimo: An American Legend Matching fields: title SCORE: 5.825854301452637 _id: “573a139bf29313caabcf36bd” Geri's Game Matching fields: title SCORE: 5.777737617492676 _id: “573a13a5f29313caabd15dae” How to Live in the German Federal Republic Matching fields: title SCORE: 5.738928318023682 _id: “573a13b4f29313caabd41bb7” The Gerson Miracle Matching fields: title SCORE: 5.738928318023682 _id: “573a13d2f29313caabd922de” The German Doctor Matching fields: title
SCORE: 4.7550506591796875 _id: “573a139df29313caabcf9ed2” South Park: Bigger Longer & Uncut Matching fields: title SCORE: 4.568849563598633 _id: “573a13a7f29313caabd1addf” Roger Dodger Matching fields: title SCORE: 4.520683288574219 _id: “573a1391f29313caabcd8783” The Jazz Singer Matching fields: title SCORE: 4.520683288574219 _id: “573a1396f29313caabce3974” Love and Anger Matching fields: title SCORE: 4.520683288574219 _id: “573a1396f29313caabce5212” Save the Tiger Matching fields: title SCORE: 4.520683288574219 _id: “573a1397f29313caabce78da” The Jazz Singer Matching fields: title SCORE: 4.520683288574219 _id: “573a1398f29313caabce9be6” The Toxic Avenger Matching fields: title SCORE: 4.520683288574219 _id: “573a139af29313caabcf0f59” The Wedding Singer Matching fields: title SCORE: 4.520683288574219 _id: “573a139af29313caabcf1389” The Crazy Stranger Matching fields: title SCORE: 4.520683288574219 _id: “573a13abf29313caabd24b5a” Save the Tiger Matching fields: title
SCORE: 4.371164321899414 _id: “573a139df29313caabcf9ed2” South Park: Bigger Longer & Uncut Matching fields: title SCORE: 4.3067307472229 _id: “573a13bff29313caabd60a4a” Bigger Stronger Faster* Matching fields: title SCORE: 4.26673698425293 _id: “573a1398f29313caabcebb00” The Toxic Avenger Part II Matching fields: title SCORE: 4.26673698425293 _id: “573a1399f29313caabcee12e” When a Stranger Calls Back Matching fields: title SCORE: 4.26673698425293 _id: “573a13cff29313caabd89c2b” Carol Channing: Larger Than Life Matching fields: title SCORE: 4.2623162269592285 _id: “573a1396f29313caabce51c6” Property Is No Longer a Theft Matching fields: title SCORE: 4.2623162269592285 _id: “573a139af29313caabcef539” Mighty Morphin Power Rangers: The Movie Matching fields: title SCORE: 4.2623162269592285 _id: “573a13b1f29313caabd364e3” Josee, the Tiger and the Fish Matching fields: title SCORE: 4.253501892089844 _id: “573a13a5f29313caabd15dae” How to Live in the German Federal Republic Matching fields: title SCORE: 4.24910831451416 _id: “573a13a3f29313caabd0f07f” Into the Arms of Strangers: Stories of the Kindertransport Matching fields: title
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
1 { 2 title: 'Gertie the Dinosaur', 3 score: 6.085907459259033, 4 highlights: [{ 5 score: 0.9227690100669861, 6 path: 'title', 7 texts: [ { value: 'Gertie the Dinosaur', type: 'hit' } ] 8 }] 9 }, 10 { 11 title: 'Germany Year Zero', 12 score: 6.085907459259033, 13 highlights: [{ 14 score: 0.9180012345314026, 15 path: 'title', 16 texts: [ { value: 'Germany Year Zero', type: 'hit' } ] 17 }] 18 }, 19 { 20 title: 'Germany in Autumn', 21 score: 6.085907459259033, 22 highlights: [{ 23 score: 0.9180012345314026, 24 path: 'title', 25 texts: [ { value: 'Germany in Autumn', type: 'hit' } ] 26 }] 27 }, 28 { 29 title: 'Germany Pale Mother', 30 score: 6.085907459259033, 31 highlights: [{ 32 score: 0.9227690100669861, 33 path: 'title', 34 texts: [ { value: 'Germany Pale Mother', type: 'hit' } ] 35 }] 36 }, 37 { 38 title: 'Gerhard Richter - Painting', 39 score: 6.085907459259033, 40 highlights: [{ 41 score: 0.9386774897575378, 42 path: 'title', 43 texts: [ { value: 'Gerhard Richter - Painting', type: 'hit' } ] 44 }] 45 }
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的左侧。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 title: 'South Park: Bigger Longer & Uncut', 3 score: 4.807340621948242, 4 highlights: [{ 5 score: 0.6177878975868225, 6 path: 'title', 7 texts: [ 8 { value: 'South Park: Bigger Longer', type: 'hit' }, 9 { value: ' & Uncut', type: 'text' } ] 10 }] 11 }, 12 { 13 title: 'Roger Dodger', 14 score: 4.6073713302612305, 15 highlights: [{ 16 score: 0.905626654624939, 17 path: 'title', 18 texts: [ { value: 'Roger Dodger', type: 'hit' } ] 19 }] 20 }, 21 { 22 title: 'The Jazz Singer', 23 score: 4.577486038208008, 24 highlights: [{ 25 score: 0.9131305813789368, 26 path: 'title', 27 texts: [ { value: 'The Jazz Singer', type: 'hit' } ] 28 }] 29 }, 30 { 31 title: 'Love and Anger', 32 score: 4.577486038208008, 33 highlights: [{ 34 score: 0.9106559753417969, 35 path: 'title', 36 texts: [ { value: 'Love and Anger', type: 'hit' } ] 37 }] 38 }, 39 { 40 title: 'Save the Tiger', 41 score: 4.577486038208008, 42 highlights: [{ 43 score: 0.9106559753417969, 44 path: 'title', 45 texts: [ { value: 'Save the Tiger', type: 'hit' } ] 46 }] 47 }
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的右侧。当突出显示的路径仅在突出显示的查询的 autocomplete 操作符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 title: 'South Park: Bigger Longer & Uncut', 3 score: 4.365298748016357, 4 highlights: [{ 5 score: 0.38510727882385254, 6 path: 'title', 7 texts: [ { value: 'South Park: Bigger Longer & Uncut', type: 'hit' } ] 8 }] 9 }, 10 { 11 title: 'Bigger Stronger Faster*', 12 score: 4.300583839416504, 13 highlights: [{ 14 score: 0.5282801985740662, 15 path: 'title', 16 texts: [ 17 { value: 'Bigger Stronger Faster', type: 'hit' }, 18 { value: '*', type: 'text' } 19 ] 20 }] 21 }, 22 { 23 title: 'The Toxic Avenger Part II', 24 score: 4.2650651931762695, 25 highlights: [{ 26 score: 0.5984020829200745, 27 path: 'title', 28 texts: [ { value: 'The Toxic Avenger Part II', type: 'hit' } ] 29 }] 30 }, 31 { 32 title: 'When a Stranger Calls Back', 33 score: 4.2650651931762695, 34 highlights: [{ 35 score: 0.6008684039115906, 36 path: 'title', 37 texts: [ { value: 'When a Stranger Calls Back', type: 'hit' } ] 38 }] 39 }, 40 { 41 title: 'Carol Channing: Larger Than Life', 42 score: 4.2650651931762695, 43 highlights: [{ 44 score: 0.6154072880744934, 45 path: 'title', 46 texts: [ { value: 'Carol Channing: Larger Than Life', type: 'hit' } ] 47 }] 48 }
Atlas Search 会返回这些结果,因为字符 ger
出现在标题的不同位置。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 title: 'Gertie the Dinosaur', 3 score: 6.085907459259033, 4 highlights: [{ 5 score: 0.9227690100669861, 6 path: 'title', 7 texts: [ { value: 'Gertie the Dinosaur', type: 'hit' } ] 8 }] 9 }, 10 { 11 title: 'Germany Year Zero', 12 score: 6.085907459259033, 13 highlights: [{ 14 score: 0.9180012345314026, 15 path: 'title', 16 texts: [ { value: 'Germany Year Zero', type: 'hit' } ] 17 }] 18 }, 19 { 20 title: 'Germany in Autumn', 21 score: 6.085907459259033, 22 highlights: [{ 23 score: 0.9180012345314026, 24 path: 'title', 25 texts: [ { value: 'Germany in Autumn', type: 'hit' } ] 26 }] 27 }, 28 { 29 title: 'Germany Pale Mother', 30 score: 6.085907459259033, 31 highlights: [{ 32 score: 0.9227690100669861, 33 path: 'title', 34 texts: [ { value: 'Germany Pale Mother', type: 'hit' } ] 35 }] 36 }, 37 { 38 title: 'Gerhard Richter - Painting', 39 score: 6.085907459259033, 40 highlights: [{ 41 score: 0.9386774897575378, 42 path: 'title', 43 texts: [ { value: 'Gerhard Richter - Painting', type: 'hit' } ] 44 }] 45 }
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的左侧。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 title: 'South Park: Bigger Longer & Uncut', 3 score: 4.807340621948242, 4 highlights: [{ 5 score: 0.6177878975868225, 6 path: 'title', 7 texts: [ 8 { value: 'South Park: Bigger Longer', type: 'hit' }, 9 { value: ' & Uncut', type: 'text' } ] 10 }] 11 }, 12 { 13 title: 'Roger Dodger', 14 score: 4.6073713302612305, 15 highlights: [{ 16 score: 0.905626654624939, 17 path: 'title', 18 texts: [ { value: 'Roger Dodger', type: 'hit' } ] 19 }] 20 }, 21 { 22 title: 'The Jazz Singer', 23 score: 4.577486038208008, 24 highlights: [{ 25 score: 0.9131305813789368, 26 path: 'title', 27 texts: [ { value: 'The Jazz Singer', type: 'hit' } ] 28 }] 29 }, 30 { 31 title: 'Love and Anger', 32 score: 4.577486038208008, 33 highlights: [{ 34 score: 0.9106559753417969, 35 path: 'title', 36 texts: [ { value: 'Love and Anger', type: 'hit' } ] 37 }] 38 }, 39 { 40 title: 'Save the Tiger', 41 score: 4.577486038208008, 42 highlights: [{ 43 score: 0.9106559753417969, 44 path: 'title', 45 texts: [ { value: 'Save the Tiger', type: 'hit' } ] 46 }] 47 }
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的右侧。当突出显示的路径仅在突出显示的查询的 autocomplete 操作符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 title: 'South Park: Bigger Longer & Uncut', 3 score: 4.365298748016357, 4 highlights: [{ 5 score: 0.38510727882385254, 6 path: 'title', 7 texts: [ { value: 'South Park: Bigger Longer & Uncut', type: 'hit' } ] 8 }] 9 }, 10 { 11 title: 'Bigger Stronger Faster*', 12 score: 4.300583839416504, 13 highlights: [{ 14 score: 0.5282801985740662, 15 path: 'title', 16 texts: [ 17 { value: 'Bigger Stronger Faster', type: 'hit' }, 18 { value: '*', type: 'text' } 19 ] 20 }] 21 }, 22 { 23 title: 'The Toxic Avenger Part II', 24 score: 4.2650651931762695, 25 highlights: [{ 26 score: 0.5984020829200745, 27 path: 'title', 28 texts: [ { value: 'The Toxic Avenger Part II', type: 'hit' } ] 29 }] 30 }, 31 { 32 title: 'When a Stranger Calls Back', 33 score: 4.2650651931762695, 34 highlights: [{ 35 score: 0.6008684039115906, 36 path: 'title', 37 texts: [ { value: 'When a Stranger Calls Back', type: 'hit' } ] 38 }] 39 }, 40 { 41 title: 'Carol Channing: Larger Than Life', 42 score: 4.2650651931762695, 43 highlights: [{ 44 score: 0.6154072880744934, 45 path: 'title', 46 texts: [ { value: 'Carol Channing: Larger Than Life', type: 'hit' } ] 47 }] 48 }
Atlas Search 会返回这些结果,因为字符 ger
出现在标题的不同位置。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { "title" : "Gertie the Dinosaur", "highlights" : [{ "path" : "title", "score" : 0.92276901006698608, "texts" : [{ "type" : "Hit", "value" : "Gertie the Dinosaur" }] }], "score" : 6.0822906494140625 } 2 { "title" : "Germany Year Zero", "highlights" : [{ "path" : "title", "score" : 0.91800123453140259, "texts" : [{ "type" : "Hit", "value" : "Germany Year Zero" }] }], "score" : 6.0822906494140625 } 3 { "title" : "Germany in Autumn", "highlights" : [{ "path" : "title", "score" : 0.91800123453140259, "texts" : [{ "type" : "Hit", "value" : "Germany in Autumn" }] }], "score" : 6.0822906494140625 } 4 { "title" : "Germany Pale Mother", "highlights" : [{ "path" : "title", "score" : 0.92276901006698608, "texts" : [{ "type" : "Hit", "value" : "Germany Pale Mother" }] }], "score" : 6.0822906494140625 } 5 { "title" : "Gerhard Richter - Painting", "highlights" : [{ "path" : "title", "score" : 0.93867748975753784, "texts" : [{ "type" : "Hit", "value" : "Gerhard Richter - Painting" }] }], "score" : 6.0822906494140625 }
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的左侧。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { "title" : "South Park: Bigger Longer & Uncut", "highlights" : [{ "path" : "title", "score" : 0.61778789758682251, "texts" : [{ "type" : "Hit", "value" : "South Park: Bigger Longer" }, { "type" : "Text", "value" : " & Uncut" }] }], "score" : 4.7550506591796875 } 2 { "title" : "Roger Dodger", "highlights" : [{ "path" : "title", "score" : 0.90562665462493896, "texts" : [{ "type" : "Hit", "value" : "Roger Dodger" }] }], "score" : 4.5688495635986328 } 3 { "title" : "The Jazz Singer", "highlights" : [{ "path" : "title", "score" : 0.91313058137893677, "texts" : [{ "type" : "Hit", "value" : "The Jazz Singer" }] }], "score" : 4.5206832885742188 } 4 { "title" : "Love and Anger", "highlights" : [{ "path" : "title", "score" : 0.91065597534179688, "texts" : [{ "type" : "Hit", "value" : "Love and Anger" }] }], "score" : 4.5206832885742188 } 5 { "title" : "Save the Tiger", "highlights" : [{ "path" : "title", "score" : 0.91065597534179688, "texts" : [{ "type" : "Hit", "value" : "Save the Tiger" }] }], "score" : 4.5206832885742188 }
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的右侧。当突出显示的路径仅在突出显示的查询的 autocomplete 操作符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { "title" : "South Park: Bigger Longer & Uncut", "highlights" : [{ "path" : "title", "score" : 0.38510727882385254, "texts" : [{ "type" : "Hit", "value" : "South Park: Bigger Longer & Uncut" }] }], "score" : 4.3711643218994141 } 2 { "title" : "Bigger Stronger Faster*", "highlights" : [{ "path" : "title", "score" : 0.52828019857406616, "texts" : [{ "type" : "Hit", "value" : "Bigger Stronger Faster" }, { "type" : "Text", "value" : "*" }] }], "score" : 4.3067307472229004 } 3 { "title" : "The Toxic Avenger Part II", "highlights" : [{ "path" : "title", "score" : 0.59840208292007446, "texts" : [{ "type" : "Hit", "value" : "The Toxic Avenger Part II" }] }], "score" : 4.2667369842529297 } 4 { "title" : "When a Stranger Calls Back", "highlights" : [{ "path" : "title", "score" : 0.60086840391159058, "texts" : [{ "type" : "Hit", "value" : "When a Stranger Calls Back" }] }], "score" : 4.2667369842529297 } 5 { "title" : "Carol Channing: Larger Than Life", "highlights" : [{ "path" : "title", "score" : 0.61540728807449341, "texts" : [{ "type" : "Hit", "value" : "Carol Channing: Larger Than Life" }] }], "score" : 4.2667369842529297 }
Atlas Search 会返回这些结果,因为字符 ger
出现在标题的不同位置。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 [ 2 {title Gertie the Dinosaur} 3 {score 6.085907459259033} 4 {highlight [[ 5 {score 0.9227690100669861} 6 {path title} 7 {texts [[{value Gertie the Dinosaur} {type hit}]]}]]}] 8 [ 9 {title Germany Year Zero} 10 {score 6.085907459259033} 11 {highlight [[ 12 {score 0.9180012345314026} 13 {path title} 14 {texts [[{value Germany Year Zero} {type hit}]]}]]}] 15 [ 16 {title Germany in Autumn} 17 {score 6.085907459259033} 18 {highlight [[ 19 {score 0.9180012345314026} 20 {path title} 21 {texts [[{value Germany in Autumn} {type hit}]]}]]}] 22 [ 23 {title Germany Pale Mother} 24 {score 6.085907459259033} 25 {highlight [[ 26 {score 0.9227690100669861} 27 {path title} 28 {texts [[{value Germany Pale Mother} {type hit}]]}]]}] 29 [ 30 {title Gerhard Richter - Painting} 31 {score 6.085907459259033} 32 {highlight [[ 33 {score 0.9386774897575378} 34 {path title} 35 {texts [[{value Gerhard Richter - Painting} {type hit}]]}]]}]
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的左侧。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 [ 2 {title South Park: Bigger Longer & Uncut} 3 {score 4.807340621948242} 4 {highlight [[ 5 {score 0.6177878975868225} 6 {path title} 7 {texts [[{value South Park: Bigger Longer} {type hit}] [{value & Uncut} {type text}]]}]]}] 8 [ 9 {title Roger Dodger} 10 {score 4.6073713302612305} 11 {highlight [[ 12 {score 0.905626654624939} 13 {path title} 14 {texts [[{value Roger Dodger} {type hit}]]}]]}] 15 [ 16 {title The Jazz Singer} 17 {score 4.577486038208008} 18 {highlight [[ 19 {score 0.9131305813789368} 20 {path title} 21 {texts [[{value The Jazz Singer} {type hit}]]}]]}] 22 [ 23 {title Love and Anger} 24 {score 4.577486038208008} 25 {highlight [[ 26 {score 0.9106559753417969} 27 {path title} 28 {texts [[{value Love and Anger} {type hit}]]}]]}] 29 [ 30 {title Save the Tiger} 31 {score 4.577486038208008} 32 {highlight [[ 33 {score 0.9106559753417969} 34 {path title} 35 {texts [[{value Save the Tiger} {type hit}]]}]]}]
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的右侧。当突出显示的路径仅在突出显示的查询的 autocomplete 操作符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 [ 2 {title South Park: Bigger Longer & Uncut} 3 {score 4.365298748016357} 4 {highlight [[ 5 {score 0.38510727882385254} 6 {path title} 7 {texts [[{value South Park: Bigger Longer & Uncut} {type hit}]]}]]}] 8 [ 9 {title Bigger Stronger Faster*} { 10 score 4.300583839416504} 11 {highlight [[ 12 {score 0.5282801985740662} 13 {path title} 14 {texts [[{value Bigger Stronger Faster} {type hit}] [{value *} {type text}]]}]]}] 15 [ 16 {title The Toxic Avenger Part II} 17 {score 4.2650651931762695} 18 {highlight [[ 19 {score 0.5984020829200745} 20 {path title} 21 {texts [[{value The Toxic Avenger Part II} {type hit}]]}]]}] 22 [ 23 {title When a Stranger Calls Back} 24 {score 4.2650651931762695} 25 {highlight [[ 26 {score 0.6008684039115906} 27 {path title} 28 {texts [[{value When a Stranger Calls Back} {type hit}]]}]]}] 29 [ 30 {title Carol Channing: Larger Than Life} 31 {score 4.2650651931762695} 32 {highlight [[ 33 {score 0.6154072880744934} 34 {path title} 35 {texts [[{value Carol Channing: Larger Than Life} {type hit}]]}]]}]
Atlas Search 会返回这些结果,因为字符 ger
出现在标题的不同位置。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 "title": "Gertie the Dinosaur", 3 "score": 6.085907459259033, 4 "highlights": [{ 5 "score": 0.9227690100669861, 6 "path": "title", 7 "texts": [{"value": "Gertie the Dinosaur", "type": "hit"}]}]} 8 { 9 "title": "Germany Year Zero", 10 "score": 6.085907459259033, 11 "highlights": [{ 12 "score": 0.9180012345314026, 13 "path": "title", 14 "texts": [{"value": "Germany Year Zero", "type": "hit"}]}]} 15 { 16 "title": "Germany in Autumn", 17 "score": 6.085907459259033, 18 "highlights": [{ 19 "score": 0.9180012345314026, 20 "path": "title", 21 "texts": [{"value": "Germany in Autumn", "type": "hit"}]}]} 22 { 23 "title": "Germany Pale Mother", 24 "score": 6.085907459259033, 25 "highlights": [{ 26 "score": 0.9227690100669861, 27 "path": "title", 28 "texts": [{"value": "Germany Pale Mother", "type": "hit"}]}]} 29 { 30 "title": "Gerhard Richter - Painting", 31 "score": 6.085907459259033, 32 "highlights": [{ 33 "score": 0.9386774897575378, 34 "path": "title", 35 "texts": [{"value": "Gerhard Richter - Painting", "type": "hit"}]}]}
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的左侧。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 "title": "South Park: Bigger Longer & Uncut", 3 "score": 4.807340621948242, 4 "highlights": [{ 5 "score": 0.6177878975868225, 6 "path": "title", 7 "texts": [{"value": "South Park: Bigger Longer", "type": "hit"}, {"value": " & Uncut", "type": "text"}]}]} 8 { 9 "title": "Roger Dodger", 10 "score": 4.6073713302612305, 11 "highlights": [{ 12 "score": 0.905626654624939, 13 "path": "title", 14 "texts": [{"value": "Roger Dodger", "type": "hit"}]}]} 15 { 16 "title": "The Jazz Singer", 17 "score": 4.577486038208008, 18 "highlights": [{ 19 "score": 0.9131305813789368, 20 "path": "title", 21 "texts": [{"value": "The Jazz Singer", "type": "hit"}]}]} 22 { 23 "title": "Love and Anger", 24 "score": 4.577486038208008, 25 "highlights": [{ 26 "score": 0.9106559753417969, 27 "path": "title", 28 "texts": [{"value": "Love and Anger", "type": "hit"}]}]} 29 { 30 "title": "Save the Tiger", 31 "score": 4.577486038208008, 32 "highlights": [{ 33 "score": 0.9106559753417969, 34 "path": "title", 35 "texts": [{"value": "Save the Tiger", "type": "hit"}]}]}
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的右侧。当突出显示的路径仅在突出显示的查询的 autocomplete 操作符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 "title": "South Park: Bigger Longer & Uncut", 3 "score": 4.365298748016357, 4 "highlights": [{ 5 "score": 0.38510727882385254, 6 "path": "title", 7 "texts": [{"value": "South Park: Bigger Longer & Uncut", "type": "hit"}]}]} 8 { 9 "title": "Bigger Stronger Faster*", 10 "score": 4.300583839416504, 11 "highlights": [{ 12 "score": 0.5282801985740662, 13 "path": "title", 14 "texts": [{"value": "Bigger Stronger Faster", "type": "hit"}, {"value": "*", "type": "text"}]}]} 15 { 16 "title": "The Toxic Avenger Part II", 17 "score": 4.2650651931762695, 18 "highlights": [{ 19 "score": 0.5984020829200745, 20 "path": "title", 21 "texts": [{"value": "The Toxic Avenger Part II", "type": "hit"}]}]} 22 { 23 "title": "When a Stranger Calls Back", 24 "score": 4.2650651931762695, 25 "highlights": [{ 26 "score": 0.6008684039115906, 27 "path": "title", 28 "texts": [{"value": "When a Stranger Calls Back", "type": "hit"}]}]} 29 { 30 "title": "Carol Channing: Larger Than Life", 31 "score": 4.2650651931762695, 32 "highlights": [{ 33 "score": 0.6154072880744934, 34 "path": "title", 35 "texts": [{"value": "Carol Channing: Larger Than Life", "type": "hit"}]}]}
Atlas Search 会返回这些结果,因为字符 ger
出现在标题的不同位置。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 Document{{title=Germany in Autumn, score=6.160550117492676, highlights=[Document{{score=0.9180012345314026, path=title, texts=[Document{{value=Germany in Autumn, type=hit}}]}}]}} 2 Document{{title=Gertie the Dinosaur, score=6.160550117492676, highlights=[Document{{score=0.9227690100669861, path=title, texts=[Document{{value=Gertie the Dinosaur, type=hit}}]}}]}} 3 Document{{title=Germany Pale Mother, score=6.160550117492676, highlights=[Document{{score=0.9227690100669861, path=title, texts=[Document{{value=Germany Pale Mother, type=hit}}]}}]}} 4 Document{{title=Geronimo: An American Legend, score=6.096138954162598, highlights=[Document{{score=0.9430088996887207, path=title, texts=[Document{{value=Geronimo: An American, type=hit}}, Document{{value= Legend, type=text}}]}}]}} 5 Document{{title=Geri's Game, score=5.900832176208496, highlights=[Document{{score=1.1180211305618286, path=title, texts=[Document{{value=Geri's Game, type=hit}}]}}]}}
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的左侧。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 Document{{title=South Park: Bigger Longer & Uncut, score=4.770905017852783, highlights=[Document{{score=0.6177878975868225, path=title, texts=[Document{{value=South Park: Bigger Longer, type=hit}}, Document{{value= & Uncut, type=text}}]}}]}} 2 Document{{title=Roger Dodger, score=4.584150791168213, highlights=[Document{{score=0.905626654624939, path=title, texts=[Document{{value=Roger Dodger, type=hit}}]}}]}} 3 Document{{title=The Crazy Stranger, score=4.535715103149414, highlights=[Document{{score=0.9203977584838867, path=title, texts=[Document{{value=The Crazy Stranger, type=hit}}]}}]}} 4 Document{{title=The Ring Finger, score=4.535715103149414, highlights=[Document{{score=0.9131305813789368, path=title, texts=[Document{{value=The Ring Finger, type=hit}}]}}]}} 5 Document{{title=Shoot the Messenger, score=4.535715103149414, highlights=[Document{{score=0.9227690100669861, path=title, texts=[Document{{value=Shoot the Messenger, type=hit}}]}}]}}
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的右侧。当突出显示的路径仅在突出显示的查询的 autocomplete 操作符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 Document{{title=South Park: Bigger Longer & Uncut, score=4.395573139190674, highlights=[Document{{score=0.38510727882385254, path=title, texts=[Document{{value=South Park: Bigger Longer & Uncut, type=hit}}]}}]}} 2 Document{{title=Bigger Stronger Faster*, score=4.33078145980835, highlights=[Document{{score=0.5282801985740662, path=title, texts=[Document{{value=Bigger Stronger Faster, type=hit}}, Document{{value=*, type=text}}]}}]}} 3 Document{{title=The Toxic Avenger Part II, score=4.2905426025390625, highlights=[Document{{score=0.5984020829200745, path=title, texts=[Document{{value=The Toxic Avenger Part II, type=hit}}]}}]}} 4 Document{{title=Carol Channing: Larger Than Life, score=4.2905426025390625, highlights=[Document{{score=0.6154072880744934, path=title, texts=[Document{{value=Carol Channing: Larger Than Life, type=hit}}]}}]}} 5 Document{{title=When a Stranger Calls Back, score=4.2905426025390625, highlights=[Document{{score=0.6008684039115906, path=title, texts=[Document{{value=When a Stranger Calls Back, type=hit}}]}}]}}
Atlas Search 会返回这些结果,因为字符 ger
出现在标题的不同位置。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 '{ 2 "title":"Gertie the Dinosaur", 3 "score":6.0822906494140625, 4 "highlights":[{ 5 "score":0.9227690100669861, 6 "path":"title", 7 "texts":[{"value":"Gertie the Dinosaur","type":"hit"}]}]}' 8 '{ 9 "title":"Germany Year Zero", 10 "score":6.0822906494140625, 11 "highlights":[{ 12 "score":0.9180012345314026, 13 "path":"title", 14 "texts":[{"value":"Germany Year Zero","type":"hit"}]}]}' 15 '{ 16 "title":"Germany in Autumn", 17 "score":6.0822906494140625, 18 "highlights":[{ 19 "score":0.9180012345314026, 20 "path":"title", 21 "texts":[{"value":"Germany in Autumn","type":"hit"}]}]}' 22 '{ 23 "title":"Germany Pale Mother", 24 "score":6.0822906494140625, 25 "highlights":[{ 26 "score":0.9227690100669861, 27 "path":"title", 28 "texts":[{"value":"Germany Pale Mother","type":"hit"}]}]}' 29 '{ 30 "title":"Gerhard Richter - Painting", 31 "score":6.0822906494140625, 32 "highlights":[{ 33 "score":0.9386774897575378, 34 "path":"title", 35 "texts":[{"value":"Gerhard Richter - Painting","type":"hit"}]}]}'
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的左侧。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 '{ 2 "title":"South Park: Bigger Longer & Uncut", 3 "score":4.7550506591796875, 4 "highlights":[{ 5 "score":0.6177878975868225, 6 "path":"title", 7 "texts":[{"value":"South Park: Bigger Longer","type":"hit"},{"value":" & Uncut","type":"text"}]}]}' 8 '{ 9 "title":"Roger Dodger", 10 "score":4.568849563598633, 11 "highlights":[{ 12 "score":0.905626654624939, 13 "path":"title", 14 "texts":[{"value":"Roger Dodger","type":"hit"}]}]}' 15 '{ 16 "title":"The Jazz Singer", 17 "score":4.520683288574219, 18 "highlights":[{ 19 "score":0.9131305813789368, 20 "path":"title", 21 "texts":[{"value":"The Jazz Singer","type":"hit"}]}]}' 22 '{ 23 "title":"Love and Anger", 24 "score":4.520683288574219, 25 "highlights":[{ 26 "score":0.9106559753417969, 27 "path":"title", 28 "texts":[{"value":"Love and Anger","type":"hit"}]}]}' 29 '{ 30 "title":"Save the Tiger", 31 "score":4.520683288574219, 32 "highlights":[{ 33 "score":0.9106559753417969, 34 "path":"title", 35 "texts":[{"value":"Save the Tiger","type":"hit"}]}]}'
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的右侧。当突出显示的路径仅在突出显示的查询的 autocomplete 操作符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 '{ 2 "title":"South Park: Bigger Longer & Uncut", 3 "score":4.371164321899414, 4 "highlights":[{ 5 "score":0.38510727882385254, 6 "path":"title", 7 "texts":[{"value":"South Park: Bigger Longer & Uncut","type":"hit"}]}]}' 8 '{ 9 "title":"Bigger Stronger Faster*", 10 "score":4.3067307472229, 11 "highlights":[{ 12 "score":0.5282801985740662, 13 "path":"title", 14 "texts":[{"value":"Bigger Stronger Faster","type":"hit"},{"value":"*","type":"text"}]}]}' 15 '{ 16 "title":"The Toxic Avenger Part II", 17 "score":4.26673698425293, 18 "highlights":[{ 19 "score":0.5984020829200745, 20 "path":"title", 21 "texts":[{"value":"The Toxic Avenger Part II","type":"hit"}]}]}' 22 '{ 23 "title":"When a Stranger Calls Back", 24 "score":4.26673698425293, 25 "highlights":[{ 26 "score":0.6008684039115906, 27 "path":"title", 28 "texts":[{"value":"When a Stranger Calls Back","type":"hit"}]}]}' 29 '{ 30 "title":"Carol Channing: Larger Than Life", 31 "score":4.26673698425293, 32 "highlights":[{ 33 "score":0.6154072880744934, 34 "path":"title", 35 "texts":[{"value":"Carol Channing: Larger Than Life","type":"hit"}]}]}'
Atlas Search 会返回这些结果,因为字符 ger
出现在标题的不同位置。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 'highlights': [{ 3 'path': 'title', 4 'score': 0.9227690100669861, 5 'texts': [{'type': 'hit', 'value': 'Gertie the Dinosaur'}]}], 6 'score': 6.085907459259033, 7 'title': 'Gertie the Dinosaur'} 8 { 9 'highlights': [{ 10 'path': 'title', 11 'score': 0.9180012345314026, 12 'texts': [{'type': 'hit', 'value': 'Germany Year Zero'}]}], 13 'score': 6.085907459259033, 14 'title': 'Germany Year Zero'} 15 { 16 'highlights': [{ 17 'path': 'title', 18 'score': 0.9180012345314026, 19 'texts': [{'type': 'hit', 'value': 'Germany in Autumn'}]}], 20 'score': 6.085907459259033, 21 'title': 'Germany in Autumn'} 22 { 23 'highlights': [{ 24 'path': 'title', 25 'score': 0.9227690100669861, 26 'texts': [{'type': 'hit', 'value': 'Germany Pale Mother'}]}], 27 'score': 6.085907459259033, 28 'title': 'Germany Pale Mother'} 29 { 30 'highlights': [{ 31 'path': 'title', 32 'score': 0.9386774897575378, 33 'texts': [{'type': 'hit', 'value': 'Gerhard Richter - Painting'}]}], 34 'score': 6.085907459259033, 35 'title': 'Gerhard Richter - Painting'}
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的左侧。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 'highlights': [{ 3 'path': 'title', 4 'score': 0.6177878975868225, 5 'texts': [{'type': 'hit', 'value': 'South Park: Bigger Longer'}, {'type': 'text', 'value': ' & Uncut'}]}], 6 'score': 4.807340621948242, 7 'title': 'South Park: Bigger Longer & Uncut'} 8 { 9 'highlights': [{ 10 'path': 'title', 11 'score': 0.905626654624939, 12 'texts': [{'type': 'hit', 'value': 'Roger Dodger'}]}], 13 'score': 4.6073713302612305, 14 'title': 'Roger Dodger'} 15 { 16 'highlights': [{ 17 'path': 'title', 18 'score': 0.9131305813789368, 19 'texts': [{'type': 'hit', 'value': 'The Jazz Singer'}]}], 20 'score': 4.577486038208008, 21 'title': 'The Jazz Singer'} 22 { 23 'highlights': [{ 24 'path': 'title', 25 'score': 0.9106559753417969, 26 'texts': [{'type': 'hit', 'value': 'Love and Anger'}]}], 27 'score': 4.577486038208008, 28 'title': 'Love and Anger'} 29 { 30 'highlights': [{ 31 'path': 'title', 32 'score': 0.9106559753417969, 33 'texts': [{'type': 'hit', 'value': 'Save the Tiger'}]}], 34 'score': 4.577486038208008, 35 'title': 'Save the Tiger'}
Atlas Search 会返回这些结果,因为字符 ger
出现在所有标题中单词的右侧。当突出显示的路径仅在突出显示的查询的 autocomplete 操作符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
1 { 2 'highlights': [{ 3 'path': 'title', 4 'score': 0.38510727882385254, 5 'texts': [{'type': 'hit', 'value': 'South Park: Bigger Longer & Uncut'}]}], 6 'score': 4.365298748016357, 7 'title': 'South Park: Bigger Longer & Uncut'} 8 { 9 'highlights': [{ 10 'path': 'title', 11 'score': 0.5282801985740662, 12 'texts':[{'type': 'hit', 'value': 'Bigger Stronger Faster'}, {'type': 'text', 'value': '*'}]}], 13 'score': 4.300583839416504, 14 'title': 'Bigger Stronger Faster*'} 15 { 16 'highlights': [{ 17 'path': 'title', 18 'score': 0.5984020829200745, 19 'texts': [{'type': 'hit', 'value': 'The Toxic Avenger Part II'}]}], 20 'score': 4.2650651931762695, 21 'title': 'The Toxic Avenger Part II'} 22 { 23 'highlights': [{ 24 'path': 'title', 25 'score': 0.6008684039115906, 26 'texts': [{'type': 'hit', 'value': 'When a Stranger Calls Back'}]}], 27 'score': 4.2650651931762695, 28 'title': 'When a Stranger Calls Back'} 29 { 30 'highlights': [{ 31 'path': 'title', 32 'score': 0.6154072880744934, 33 'texts': [{'type': 'hit', 'value': 'Carol Channing: Larger Than Life'}]}], 34 'score': 4.2650651931762695, 35 'title': 'Carol Channing: Larger Than Life'}
Atlas Search 会返回这些结果,因为字符 ger
出现在标题的不同位置。当突出显示的路径仅在突出显示的查询的 autocomplete 运算符中引用时,Atlas Search 会更粗略地将突出显示的 hit
与您的查询术语进行匹配。
跨多个字段搜索
下面的查询使用复合操作符在 movies
集合的 title
和 plot
字段中搜索以字符串 inter
开头的单词。
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { $search: { compound: { should: [ { autocomplete: { query: "inter", path: "title" } }, { text: { query: "inter", path: "plot" } } ], minimumShouldMatch: 1 } } } ]
查询包括:
1 db.movies.aggregate([ 2 { 3 $search: { 4 "compound": { 5 "should": [ 6 { 7 "autocomplete": { 8 "query": "inter", 9 "path": "title", 10 }, 11 }, 12 { 13 "text": { 14 "query": "inter", 15 "path": "plot", 16 } 17 } 18 ], 19 "minimumShouldMatch": 1 20 }, 21 }, 22 }, 23 { 24 $limit: 10, 25 }, 26 { 27 $project: 28 { 29 "_id": 0, 30 "title": 1, 31 "plot": 1 32 }, 33 }, 34 ])
查询包括:
在 movies
集合的 Aggregations 标签页中,从下拉菜单中选择阶段并为该阶段添加查询,以配置以下每个管道阶段。单击 Add Stage 添加其他阶段。
管道阶段 | 查询 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||||||||||
|
| |||||||||||||||||
|
|
查询包括:
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 AutocompleteCompoundExample 8 { 9 private const string MongoConnectionString = "<connection-string>"; 10 11 public static void Main(string[] args) 12 { 13 // allow automapping of the camelCase database fields to our MovieDocument 14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; 15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); 16 17 // connect to your Atlas cluster 18 var mongoClient = new MongoClient(MongoConnectionString); 19 var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); 20 var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); 21 22 // define and run pipeline 23 var results = moviesCollection.Aggregate() 24 .Search(Builders<MovieDocument>.Search.Compound() 25 .Should(Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "inter")) 26 .Should(Builders<MovieDocument>.Search.Text(movie => movie.Plot, "inter"))) 27 .Project<MovieDocument>(Builders<MovieDocument>.Projection 28 .Include(movie => movie.Plot) 29 .Include(movie => movie.Title) 30 .Exclude(movie => movie.Id)) 31 .Limit(10) 32 .ToList(); 33 34 // print results 35 foreach (var movie in results) 36 { 37 Console.WriteLine(movie.ToJson()); 38 } 39 } 40 } 41 42 [ ]43 public class MovieDocument 44 { 45 [ ]46 public ObjectId Id { get; set; } 47 public string Plot { get; set; } 48 public string Title { get; set; } 49 }
查询包括:
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 7 "go.mongodb.org/mongo-driver/bson" 8 "go.mongodb.org/mongo-driver/mongo" 9 "go.mongodb.org/mongo-driver/mongo/options" 10 ) 11 12 func main() { 13 // connect to your Atlas cluster 14 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) 15 if err != nil { 16 panic(err) 17 } 18 defer client.Disconnect(context.TODO()) 19 20 // set namespace 21 collection := client.Database("sample_mflix").Collection("movies") 22 23 // define pipeline stages 24 searchStage := bson.D{ 25 {"$search", bson.D{ 26 {"compound", bson.D{ 27 {"should", bson.A{ 28 bson.D{ 29 {"autocomplete", bson.D{{"query", "inter"}, {"path", "title"}}}, 30 }, 31 bson.D{ 32 {"autocomplete", bson.D{{"query", "inter"}, {"path", "plot"}}}, 33 }, 34 }}, 35 {"minimumShouldMatch", 1}, 36 }}, 37 }}, 38 } 39 limitStage := bson.D{{"$limit", 10}} 40 projectStage := bson.D{{"$project", bson.D{{"title", 1}, {"plot", 1}, {"_id", 0}}}} 41 // run pipeline 42 cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchStage, limitStage, projectStage}) 43 if err != nil { 44 panic(err) 45 } 46 47 // print results 48 var results []bson.D 49 if err = cursor.All(context.TODO(), &results); err != nil { 50 panic(err) 51 } 52 for _, result := range results { 53 fmt.Println(result) 54 } 55 }
查询包括:
1 import static com.mongodb.client.model.Aggregates.limit; 2 import static com.mongodb.client.model.Aggregates.project; 3 import static com.mongodb.client.model.Projections.excludeId; 4 import static com.mongodb.client.model.Projections.fields; 5 import static com.mongodb.client.model.Projections.include; 6 import com.mongodb.client.MongoClient; 7 import com.mongodb.client.MongoClients; 8 import com.mongodb.client.MongoCollection; 9 import com.mongodb.client.MongoDatabase; 10 import org.bson.Document; 11 import java.util.Arrays; 12 13 public class AutocompleteQuery { 14 15 public static void main(String[] args) { 16 // connect to your Atlas cluster 17 String uri = "<connection-string>"; 18 19 try (MongoClient mongoClient = MongoClients.create(uri)) { 20 // set namespace 21 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 22 MongoCollection<Document> collection = database.getCollection("movies"); 23 24 // define pipeline 25 Document agg = new Document(new Document("should", Arrays.asList(new Document("autocomplete", 26 new Document("path", "title") 27 .append("query", "inter")), 28 new Document("text", 29 new Document("path", "plot") 30 .append("query", "inter")))) 31 .append("minimumShouldMatch", 1L)); 32 33 // run pipeline and print results 34 collection.aggregate(Arrays.asList( 35 eq("$search", eq("compound", agg)), 36 limit(10), 37 project(fields(excludeId(), include("title"))))).forEach(doc -> System.out.println(doc.toJson())); 38 } 39 } 40 }
查询包括:
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Filters.eq 4 import com.mongodb.client.model.Projections.* 5 import com.mongodb.kotlin.client.coroutine.MongoClient 6 import kotlinx.coroutines.runBlocking 7 import org.bson.Document 8 9 fun main() { 10 val uri = "<connection-string>" 11 val mongoClient = MongoClient.create(uri) 12 val database = mongoClient.getDatabase("sample_mflix") 13 val collection = database.getCollection<Document>("movies") 14 15 runBlocking { 16 val agg = Document( 17 Document( 18 "should", listOf( 19 Document( 20 "autocomplete", 21 Document("path", "title") 22 .append("query", "inter") 23 ), 24 Document( 25 "text", 26 Document("path", "plot") 27 .append("query", "inter") 28 ) 29 ) 30 ).append("minimumShouldMatch", 1L) 31 ) 32 33 val resultsFlow = collection.aggregate<Document>( 34 listOf( 35 eq("\$search", eq("compound", agg)), 36 limit(10), 37 project(fields(excludeId(), include("title", "plot"))) 38 ) 39 ) 40 resultsFlow.collect { println(it) } 41 } 42 mongoClient.close() 43 }
查询包括:
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 { 20 '$search': { 21 'compound': { 22 'should': [ 23 { 24 'autocomplete': { 25 'query': 'inter', 26 'path': 'title' 27 } 28 }, 29 { 30 'autocomplete': { 31 'query': 'inter', 32 'path': 'plot' 33 } 34 } 35 ], 36 'minimumShouldMatch': 1 37 } 38 } 39 }, 40 { 41 '$limit': 10 42 }, 43 { 44 '$project': { 45 '_id': 0, 46 'title': 1, 47 'plot': 1 48 } 49 } 50 ]; 51 // run pipelines 52 const result = await coll.aggregate(agg); 53 54 // print results 55 await result.forEach((doc) => console.log(doc)); 56 } finally { 57 await client.close(); 58 } 59 } 60 run().catch(console.dir);
查询包括:
1 import pymongo 2 3 # connect to your Atlas cluster 4 client = pymongo.MongoClient('<connection-string>') 5 6 # define pipeline 7 pipeline = [ 8 { 9 '$search': { 10 'compound': { 11 'should': [ 12 { 13 'autocomplete': { 14 'query': 'inter', 15 'path': 'title' 16 } 17 }, { 18 'autocomplete': { 19 'query': 'inter', 20 'path': 'plot' 21 } 22 } 23 ], 24 'minimumShouldMatch': 1 25 } 26 } 27 }, 28 { 29 '$limit': 10 30 }, 31 { 32 '$project': { 33 '_id': 0, 'title': 1, 'plot': 1 34 } 35 } 36 ] 37 # run pipeline 38 result = client["sample_mflix"]["movies"].aggregate(pipeline) 39 40 # print results 41 for i in result: 42 print(i)
SCORE: 5.796849727630615 _id: “573a13dbf29313caabdaf9a0” fullplot: "In order to avoid an X rating, 40 minutes of gay S&M footage was rumor…" imdb: Object year: 2013 ... title: "Interior. Leather Bar." SCORE: 5.736375331878662 1 _id: “573a13a8f29313caabd1d060” plot: "Almost forty years after the John F. Kennedy assassination, an ex-Mari…" genres: Array runtime: 88 ... title: "Interview with the Assassin" SCORE: 5.677149295806885 _id: “573a13b8f29313caabd4bcbf” plot: "A graduate student (Nicholson) copes with a recent breakup by conducti…" genres: Array runtime: 80 ... title: "Brief Interviews with Hideous Men" SCORE: 5.619133949279785 _id: “573a139af29313caabcf0753” fullplot: "Austin Powers is a 60's spy who is cryonically frozen and released in …" imdb: Object year: 1997 ... title: "Austin Powers: International Man of Mystery" SCORE: 5.619133949279785 _id: “573a139df29313caabcfb827” plot: "A confused young man (Marsden) takes a journey on a road that doesn't …" genres: Array runtime: 116 ... title: "Interstate 60: Episodes of the Road" SCORE: 5.562292575836182 __id: “573a1399f29313caabcee754” fullplot: "It hasn't even been a year since a plantation owner named Louis lost h…" imdb: Object year: 1984 ... title: "Interview with the Vampire: The Vampire Chronicles" SCORE: 5.55244779586792 _id: “573a1394f29313caabcdfd1e” plot: "The film chronicles Australian-born opera star Marjorie Lawrence's suc…" genres: Array runtime: 106 ... title: "Interrupted Melody" SCORE: 5.451991081237793 _id: “573a13e9f29313caabdcbd58” plot: "The story of programming prodigy and information activist Aaron Swartz…" genres: Array runtime: 105 ... title: "The Internet's Own Boy: The Story of Aaron Swartz" SCORE: 5.389190673828125 _id: “573a13bef29313caabd5d0ac” plot: "Locked up and isolated, constantly exposed and threatened to be killed…" genres: Array runtime: 89 ... title: "Richness of Internal Space" SCORE: 4.929009437561035 _id: “573a1397f29313caabce6ca7” plot: "Three sisters find their lives spinning out of control in the wake of …" genres: Array runtime: 93 ... title: "Interiors"
SCORE: 5.94391393661499 _id: “573a13b1f29313caabd35dc7” plot: "After her son is hospitalized, a doctor cheats on her husband with a s…" genres: Array runtime: 84 ... title: "Kissed by Winter" SCORE: 5.94391393661499 _id: “573a13b4f29313caabd3f3fe” plot: "The American oil company KIC Corporation is building an ice road to ex…" genres: Array runtime: 101 ... title: "The Last Winter" SCORE: 5.94391393661499 _id: “573a13c0f29313caabd62f21” plot: "A couple engage in discussions with people on the street, politicians …" genres: Array runtime: 85 ... title: "Suddenly, Last Winter" SCORE: 5.94391393661499 _id: “573a13d5f29313caabd9a45b” plot: "WINTER is a dangerous, sexy, poignant and at times darkly funny story …" genres: Array runtime: 132 ... title: "After Fall, Winter" SCORE: 5.881905555725098 _id: “573a1396f29313caabce366e” plot: "1183 AD: King Henry II's three sons all want to inherit the throne, bu…" genres: Array runtime: 134 ... title: "The Lion in Winter" SCORE: 5.881905555725098 _id: “573a1396f29313caabce5271” plot: "Rita, a middle aged New York City homemaker, finds herself in an emoti…" genres: Array runtime: 93 ... title: "Summer Wishes, Winter Dreams" SCORE: 5.881905555725098 _id: “573a1399f29313caabcecfef” plot: "Felicie and Charles have a serious if whirlwind holiday romance. Due t…" genres: Array runtime: 114 ... title: "A Tale of Winter" SCORE: 5.881905555725098 _id: “573a139af29313caabcf1762” plot: "A mysterious creature is killing a farmer's livestock." genres: Array runtime: 92 ... title: "In the Winter Dark" SCORE: 5.821177005767822 _id: “573a13a0f29313caabd02f47” plot: "Sean is a little duck with a big problem. Due to a mishap with a jet a…" genres: Array runtime: 28 ... title: "The First Snow of Winter" SCORE: 5.821177005767822 _id: “573a13b3f29313caabd3eb6f” plot: "A renowned artist must uncover a young dancer's secrets in order to tr…" genres: Array runtime: 129 ... title: "A Year Ago in Winter"
SCORE: 5.540487289428711 _id: “573a139af29313caabcf0753” fullplot: "Austin Powers is a 60's spy who is cryonically frozen and released in …" imdb: Object year: 1997 ... title: "Austin Powers: International Man of Mystery" SCORE: 5.540487289428711 _id: “573a13aef29313caabd2ca07” plot: "On an isolated lake, an old monk lives on a small floating temple. The…" genres: Array runtime: 103 ... title: "Spring, Summer, Fall, Winter... and Spring" SCORE: 5.495308876037598 _id: “573a1396f29313caabce5271” plot: "Rita, a middle aged New York City homemaker, finds herself in an emoti…" genres: Array runtime: 93 ... title: "Summer Wishes, Winter Dreams" SCORE: 5.495308876037598 _id: “573a139af29313caabcf1762” plot: "A mysterious creature is killing a farmer's livestock." genres: Array runtime: 92 ... title: "In the Winter Dark" SCORE: 5.495308876037598 _id: “573a13bef29313caabd5d0ac” plot: "Locked up and isolated, constantly exposed and threatened to be killed…" genres: Array runtime: 89 ... title: "Richness of Internal Space" SCORE: 5.4885406494140625 _id: “573a13b8f29313caabd4bcbf” plot: "A graduate student (Nicholson) copes with a recent breakup by conducti…" genres: Array runtime: 80 ... title: "Brief Interviews with Hideous Men" SCORE: 5.4885406494140625 _id: “573a13d2f29313caabd91d33” fullplot: "For Steve Rogers, awakening after decades of suspended animation invol…" imdb Object year: 2014 ... title: "Captain America: The Winter Soldier" SCORE: 5.481788635253906 _id: “573a139ff29313caabd01cc6” plot: "On a cold winter day a mysterious stranger shows up at the Witting Far…" genres: Array runtime: 95 ... title: "Sarah, Plain and Tall: Winter's End" SCORE: 5.46163272857666 _id: “573a13e9f29313caabdcbd58” plot: "The story of programming prodigy and information activist Aaron Swartz…" genres: Array runtime: 105 ... title: "The Internet's Own Boy: The Story of Aaron Swartz" SCORE: 5.420651435852051 _id: “573a1398f29313caabcebac5” plot: "Set during World War 2. After Nazi Germany invaded Poland in September…" genres: Array runtime: 195 ... title: "The Winter War"
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
1 { 2 plot: 'Filmmakers James Franco and Travis Mathews re-imagine the lost 40 minutes from \"Cruising\" as a starting point to a broader exploration of sexual and creative freedom.', 3 title: 'Interior. Leather Bar.' 4 }, 5 { 6 plot: 'Almost forty years after the John F. Kennedy assassination, an ex-Marine named Walter Ohlinger has come forward with a startling claim.', 7 title: 'Interview with the Assassin' 8 }, 9 { 10 plot: 'A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.', 11 title: 'Brief Interviews with Hideous Men' 12 }, 13 { 14 plot: 'A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.', 15 title: 'Austin Powers\:\ International Man of Mystery' 16 }, 17 { 18 plot: 'A confused young man (Marsden) takes a journey on a road that doesn\'t exist on any map.', 19 title: 'Interstate 60\:\ Episodes of the Road' 20 }, 21 { 22 plot: 'A vampire tells his epic life story\:\ love, betrayal, loneliness, and hunger.', 23 title: 'Interview with the Vampire\:\ The Vampire Chronicles' 24 }, 25 { 26 plot: 'The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.', 27 title: 'The Internet\'s Own Boy\:\ The Story of Aaron Swartz' 28 }, 29 { 30 plot: 'The film chronicles Australian-born opera star Marjorie Lawrence\'s success, her battle with polio, and her eventual career comeback.', 31 title: 'Interrupted Melody' 32 } 33 { 34 plot: 'Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.', 35 title: 'Richness of Internal Space' 36 } 37 { 38 plot: 'Three sisters find their lives spinning out of control in the wake of their parents\' sudden, unexpected divorce.', 39 title: 'Interiors' 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中某个词的开头。Atlas Search 返回以指定查询字符串开头的结果,因为 Atlas Search 会将查询词与其为从单词左侧开始的 title
和 plot
字段创建的词元进行匹配。
1 { 2 plot: 'After her son is hospitalized, a doctor cheats on her husband with a snow plow driver who is a suspect in her investigation of the recent death of a young Arab boy.', 3 title: 'Kissed by Winter' 4 }, 5 { 6 plot: 'The American oil company KIC Corporation is building an ice road to explore the remote Northern Arctic National Wildlife Refuge seeking energy independence. Independent environmentalists ...', 7 title: 'The Last Winter' 8 }, 9 { 10 plot: 'A couple engage in discussions with people on the street, politicians and religious leaders about the discrimination against gays and lesbians in Italy.', 11 title: 'Suddenly, Last Winter' 12 }, 13 { 14 plot: 'WINTER is a dangerous, sexy, poignant and at times darkly funny story about two people who desperately want intimacy but have fashioned lives of reclusivity and emotional fracture which ...', 15 title: 'After Fall, Winter' 16 }, 17 { 18 plot: 'Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...', 19 title: 'Summer Wishes, Winter Dreams' 20 }, 21 { 22 plot: '1183 AD\:\ King Henry II\'s three sons all want to inherit the throne, but he won\'t commit to a choice. They and his wife variously plot to force him.', 23 title: 'The Lion in Winter' 24 }, 25 { 26 plot: 'Felicie and Charles have a serious if whirlwind holiday romance. Due to a mix-up on addresses they lose contact, and five years later at Christmas-time Felicie is living with her mother in ...', 27 title: 'A Tale of Winter' 28 }, 29 { 30 plot: 'A mysterious creature is killing a farmer\'s livestock.', 31 title: 'In the Winter Dark' 32 }, 33 { 34 plot: 'Sean is a little duck with a big problem. Due to a mishap with a jet aircraft Sean misses the annual migration South and has to face the winter alone. However, he is befriended by a water ...', 35 title: 'The First Snow of Winter' 36 }, 37 { 38 plot: 'A renowned artist must uncover a young dancer\'s secrets in order to truly capture her likeness for a commissioned work.', 39 title: 'A Year Ago in Winter' 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中单词的末尾。Atlas Search 返回以指定查询字符串结尾的结果,因为 Atlas Search 会将查询词与其为从单词右侧开始的 title
和 plot
字段创建的词元进行匹配,这些词元由分析器分隔。
1 { 2 plot: 'A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.', 3 title: 'Austin Powers\:\ International Man of Mystery' 4 }, 5 { 6 plot: 'On an isolated lake, an old monk lives on a small floating temple. The wise master has also a young boy with him who learns to become a monk. And we watch as seasons and years pass by.', 7 title: 'Spring, Summer, Fall, Winter... and Spring' 8 }, 9 { 10 plot: 'Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...', 11 title: 'Summer Wishes, Winter Dreams' 12 }, 13 { 14 plot: 'A mysterious creature is killing a farmer\'s livestock.', 15 title: 'In the Winter Dark' 16 }, 17 { 18 plot: 'Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.', 19 title: 'Richness of Internal Space' 20 }, 21 { 22 plot: 'A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.', 23 title: 'Brief Interviews with Hideous Men' 24 }, 25 { 26 plot: 'As Steve Rogers struggles to embrace his role in the modern world, he teams up with another super soldier, the black widow, to battle a new threat from old history\:\ an assassin known as the Winter Soldier.', 27 title: 'Captain America\:\ The Winter Soldier' 28 }, 29 { 30 plot: 'On a cold winter day a mysterious stranger shows up at the Witting Farm. He is John Witting, the father of Jacob Witting who abandoned Jacob and his mother when Jacob was little. Jacob is ...', 31 title: 'Sarah, Plain and Tall\:\ Winter\'s End' 32 }, 33 { 34 plot: 'The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.', 35 title: 'The Internet\'s Own Boy\:\ The Story of Aaron Swartz' 36 }, 37 { 38 plot: 'Out of work actor Joe volunteers to help try and save his sister\'s local church for the community by putting on a Christmas production of Hamlet, somewhat against the advice of his agent ...', 39 title: 'A Midwinter\'s Tale' 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中的某个单词中。Atlas Search 返回包含指定查询字符串的单词的结果,因为 Atlas Search 会将查询词与其为 title
和 plot
字段创建的长度介于 3 到 7 个字符之间的标记进行匹配。
1 { 2 plot: 'Filmmakers James Franco and Travis Mathews re-imagine the lost 40 minutes from \"Cruising\" as a starting point to a broader exploration of sexual and creative freedom.', 3 title: 'Interior. Leather Bar.' 4 }, 5 { 6 plot: 'Almost forty years after the John F. Kennedy assassination, an ex-Marine named Walter Ohlinger has come forward with a startling claim.', 7 title: 'Interview with the Assassin' 8 }, 9 { 10 plot: 'A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.', 11 title: 'Brief Interviews with Hideous Men' 12 }, 13 { 14 plot: 'A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.', 15 title: 'Austin Powers\:\ International Man of Mystery' 16 }, 17 { 18 plot: 'A confused young man (Marsden) takes a journey on a road that doesn\'t exist on any map.', 19 title: 'Interstate 60\:\ Episodes of the Road' 20 }, 21 { 22 plot: 'A vampire tells his epic life story\:\ love, betrayal, loneliness, and hunger.', 23 title: 'Interview with the Vampire\:\ The Vampire Chronicles' 24 }, 25 { 26 plot: 'The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.', 27 title: 'The Internet\'s Own Boy\:\ The Story of Aaron Swartz' 28 }, 29 { 30 plot: 'The film chronicles Australian-born opera star Marjorie Lawrence\'s success, her battle with polio, and her eventual career comeback.', 31 title: 'Interrupted Melody' 32 } 33 { 34 plot: 'Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.', 35 title: 'Richness of Internal Space' 36 } 37 { 38 plot: 'Three sisters find their lives spinning out of control in the wake of their parents\' sudden, unexpected divorce.', 39 title: 'Interiors' 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中某个词的开头。Atlas Search 返回以指定查询字符串开头的结果,因为 Atlas Search 会将查询词与其为从单词左侧开始的 title
和 plot
字段创建的词元进行匹配。
1 { 2 plot: 'After her son is hospitalized, a doctor cheats on her husband with a snow plow driver who is a suspect in her investigation of the recent death of a young Arab boy.', 3 title: 'Kissed by Winter' 4 }, 5 { 6 plot: 'The American oil company KIC Corporation is building an ice road to explore the remote Northern Arctic National Wildlife Refuge seeking energy independence. Independent environmentalists ...', 7 title: 'The Last Winter' 8 }, 9 { 10 plot: 'A couple engage in discussions with people on the street, politicians and religious leaders about the discrimination against gays and lesbians in Italy.', 11 title: 'Suddenly, Last Winter' 12 }, 13 { 14 plot: 'WINTER is a dangerous, sexy, poignant and at times darkly funny story about two people who desperately want intimacy but have fashioned lives of reclusivity and emotional fracture which ...', 15 title: 'After Fall, Winter' 16 }, 17 { 18 plot: 'Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...', 19 title: 'Summer Wishes, Winter Dreams' 20 }, 21 { 22 plot: '1183 AD\:\ King Henry II\'s three sons all want to inherit the throne, but he won\'t commit to a choice. They and his wife variously plot to force him.', 23 title: 'The Lion in Winter' 24 }, 25 { 26 plot: 'Felicie and Charles have a serious if whirlwind holiday romance. Due to a mix-up on addresses they lose contact, and five years later at Christmas-time Felicie is living with her mother in ...', 27 title: 'A Tale of Winter' 28 }, 29 { 30 plot: 'A mysterious creature is killing a farmer\'s livestock.', 31 title: 'In the Winter Dark' 32 }, 33 { 34 plot: 'Sean is a little duck with a big problem. Due to a mishap with a jet aircraft Sean misses the annual migration South and has to face the winter alone. However, he is befriended by a water ...', 35 title: 'The First Snow of Winter' 36 }, 37 { 38 plot: 'A renowned artist must uncover a young dancer\'s secrets in order to truly capture her likeness for a commissioned work.', 39 title: 'A Year Ago in Winter' 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中单词的末尾。Atlas Search 返回以指定查询字符串结尾的结果,因为 Atlas Search 会将查询词与其为从单词右侧开始的 title
和 plot
字段创建的词元进行匹配,这些词元由分析器分隔。
1 { 2 plot: 'A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.', 3 title: 'Austin Powers\:\ International Man of Mystery' 4 }, 5 { 6 plot: 'On an isolated lake, an old monk lives on a small floating temple. The wise master has also a young boy with him who learns to become a monk. And we watch as seasons and years pass by.', 7 title: 'Spring, Summer, Fall, Winter... and Spring' 8 }, 9 { 10 plot: 'Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...', 11 title: 'Summer Wishes, Winter Dreams' 12 }, 13 { 14 plot: 'A mysterious creature is killing a farmer\'s livestock.', 15 title: 'In the Winter Dark' 16 }, 17 { 18 plot: 'Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.', 19 title: 'Richness of Internal Space' 20 }, 21 { 22 plot: 'A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.', 23 title: 'Brief Interviews with Hideous Men' 24 }, 25 { 26 plot: 'As Steve Rogers struggles to embrace his role in the modern world, he teams up with another super soldier, the black widow, to battle a new threat from old history\:\ an assassin known as the Winter Soldier.', 27 title: 'Captain America\:\ The Winter Soldier' 28 }, 29 { 30 plot: 'On a cold winter day a mysterious stranger shows up at the Witting Farm. He is John Witting, the father of Jacob Witting who abandoned Jacob and his mother when Jacob was little. Jacob is ...', 31 title: 'Sarah, Plain and Tall\:\ Winter\'s End' 32 }, 33 { 34 plot: 'The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.', 35 title: 'The Internet\'s Own Boy\:\ The Story of Aaron Swartz' 36 }, 37 { 38 plot: 'Out of work actor Joe volunteers to help try and save his sister\'s local church for the community by putting on a Christmas production of Hamlet, somewhat against the advice of his agent ...', 39 title: 'A Midwinter\'s Tale' 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中的某个单词中。Atlas Search 返回包含指定查询字符串的单词的结果,因为 Atlas Search 会将查询词与其为 title
和 plot
字段创建的长度介于 3 到 7 个字符之间的标记进行匹配。
1 { 2 "plot" : 'Filmmakers James Franco and Travis Mathews re-imagine the lost 40 minutes from \"Cruising\" as a starting point to a broader exploration of sexual and creative freedom.', 3 "title" : 'Interior. Leather Bar.' 4 } 5 { 6 "plot" : 'Almost forty years after the John F. Kennedy assassination, an ex-Marine named Walter Ohlinger has come forward with a startling claim.', 7 "title" : 'Interview with the Assassin' 8 } 9 { 10 "plot" : 'A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.', 11 "title" : 'Brief Interviews with Hideous Men' 12 } 13 { 14 "plot" : 'A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.', 15 "title" : 'Austin Powers\:\ International Man of Mystery' 16 } 17 { 18 "plot" : 'A confused young man (Marsden) takes a journey on a road that doesn\'t exist on any map.', 19 "title" : 'Interstate 60\:\ Episodes of the Road' 20 } 21 { 22 "plot" : 'A vampire tells his epic life story\:\ love, betrayal, loneliness, and hunger.', 23 "title" : 'Interview with the Vampire\:\ The Vampire Chronicles' 24 } 25 { 26 "plot" : 'The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.', 27 "title" : 'The Internet\'s Own Boy\:\ The Story of Aaron Swartz' 28 } 29 { 30 "plot" : 'The film chronicles Australian-born opera star Marjorie Lawrence\'s success, her battle with polio, and her eventual career comeback.', 31 "title" : 'Interrupted Melody' 32 } 33 { 34 "plot" : "Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.", 35 "title" : "Richness of Internal Space" 36 } 37 { 38 "plot" : "Three sisters find their lives spinning out of control in the wake of their parents' sudden, unexpected divorce.", 39 "title" : "Interiors" 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中某个词的开头。Atlas Search 返回以指定查询字符串开头的结果,因为 Atlas Search 会将查询词与其为从单词左侧开始的 title
和 plot
字段创建的词元进行匹配。
1 { 2 "plot" : 'After her son is hospitalized, a doctor cheats on her husband with a snow plow driver who is a suspect in her investigation of the recent death of a young Arab boy.', 3 "title" : 'Kissed by Winter' 4 } 5 { 6 "plot" : 'The American oil company KIC Corporation is building an ice road to explore the remote Northern Arctic National Wildlife Refuge seeking energy independence. Independent environmentalists ...', 7 "title" : 'The Last Winter' 8 } 9 { 10 "plot" : 'A couple engage in discussions with people on the street, politicians and religious leaders about the discrimination against gays and lesbians in Italy.', 11 "title" : 'Suddenly, Last Winter' 12 } 13 { 14 "plot" : 'WINTER is a dangerous, sexy, poignant and at times darkly funny story about two people who desperately want intimacy but have fashioned lives of reclusivity and emotional fracture which ...', 15 "title" : 'After Fall, Winter' 16 } 17 { 18 "plot" : 'Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...', 19 "title" : 'Summer Wishes, Winter Dreams' 20 } 21 { 22 "plot" : '1183 AD\:\ King Henry II\'s three sons all want to inherit the throne, but he won\'t commit to a choice. They and his wife variously plot to force him.', 23 "title" : 'The Lion in Winter' 24 } 25 { 26 "plot" : 'Felicie and Charles have a serious if whirlwind holiday romance. Due to a mix-up on addresses they lose contact, and five years later at Christmas-time Felicie is living with her mother in ...', 27 "title" : 'A Tale of Winter' 28 } 29 { 30 "plot" : 'A mysterious creature is killing a farmer\'s livestock.', 31 "title" : 'In the Winter Dark' 32 } 33 { 34 "plot" : 'Sean is a little duck with a big problem. Due to a mishap with a jet aircraft Sean misses the annual migration South and has to face the winter alone. However, he is befriended by a water ...', 35 "title" : 'The First Snow of Winter' 36 } 37 { 38 "plot" : 'A renowned artist must uncover a young dancer\'s secrets in order to truly capture her likeness for a commissioned work.', 39 "title" : 'A Year Ago in Winter' 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中单词的末尾。Atlas Search 返回以指定查询字符串结尾的结果,因为 Atlas Search 会将查询词与其为从单词右侧开始的 title
和 plot
字段创建的词元进行匹配,这些词元由分析器分隔。
1 { 2 "plot" : 'A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.', 3 "title" : 'Austin Powers\:\ International Man of Mystery' 4 } 5 { 6 "plot" : 'On an isolated lake, an old monk lives on a small floating temple. The wise master has also a young boy with him who learns to become a monk. And we watch as seasons and years pass by.', 7 "title" : 'Spring, Summer, Fall, Winter... and Spring' 8 } 9 { 10 "plot" : 'Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...', 11 "title" : 'Summer Wishes, Winter Dreams' 12 } 13 { 14 "plot" : 'A mysterious creature is killing a farmer\'s livestock.', 15 "title" : 'In the Winter Dark' 16 } 17 { 18 "plot" : 'Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.', 19 "title" : 'Richness of Internal Space' 20 } 21 { 22 "plot" : 'A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.', 23 "title" : 'Brief Interviews with Hideous Men' 24 } 25 { 26 "plot" : 'As Steve Rogers struggles to embrace his role in the modern world, he teams up with another super soldier, the black widow, to battle a new threat from old history\:\ an assassin known as the Winter Soldier.', 27 "title" : 'Captain America\:\ The Winter Soldier' 28 } 29 { 30 "plot" : 'On a cold winter day a mysterious stranger shows up at the Witting Farm. He is John Witting, the father of Jacob Witting who abandoned Jacob and his mother when Jacob was little. Jacob is ...', 31 "title" : 'Sarah, Plain and Tall\:\ Winter\'s End' 32 } 33 { 34 "plot" : 'The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.', 35 "title" : 'The Internet\'s Own Boy\:\ The Story of Aaron Swartz' 36 } 37 { 38 "plot" : 'Out of work actor Joe volunteers to help try and save his sister\'s local church for the community by putting on a Christmas production of Hamlet, somewhat against the advice of his agent ...', 39 "title" : 'A Midwinter\'s Tale' 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中的某个单词中。Atlas Search 返回包含指定查询字符串的单词的结果,因为 Atlas Search 会将查询词与其为 title
和 plot
字段创建的长度介于 3 到 7 个字符之间的标记进行匹配。
1 [ 2 {plot Filmmakers James Franco and Travis Mathews re-imagine the lost 40 minutes from \"Cruising\" as a starting point to a broader exploration of sexual and creative freedom.} 3 {title Interior. Leather Bar.} 4 ] 5 [ 6 {plot Almost forty years after the John F. Kennedy assassination, an ex-Marine named Walter Ohlinger has come forward with a startling claim.} 7 {title Interview with the Assassin} 8 ] 9 [ 10 {plot A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.} 11 {title Brief Interviews with Hideous Men} 12 ] 13 [ 14 {plot A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.} 15 {title Austin Powers: International Man of Mystery} 16 ] 17 [ 18 {plot A confused young man (Marsden) takes a journey on a road that doesn't exist on any map.} 19 {title Interstate 60: Episodes of the Road} 20 ] 21 [ 22 {plot A vampire tells his epic life story: love, betrayal, loneliness, and hunger.} 23 {title Interview with the Vampire: The Vampire Chronicles} 24 ] 25 [ 26 {plot The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.} 27 {title The Internet's Own Boy: The Story of Aaron Swartz} 28 ] 29 [ 30 {plot The film chronicles Australian-born opera star Marjorie Lawrence's success, her battle with polio, and her eventual career comeback.} 31 {title Interrupted Melody} 32 ] 33 [ 34 {plot Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.} 35 {title Richness of Internal Space} 36 ] 37 [ 38 {plot Three sisters find their lives spinning out of control in the wake of their parents' sudden, unexpected divorce.} 39 {title Interiors} 40 ]
在这些结果中,字符 inter
出现在 title
或 plot
字段中某个词的开头。Atlas Search 返回以指定查询字符串开头的结果,因为 Atlas Search 会将查询词与其为从单词左侧开始的 title
和 plot
字段创建的词元进行匹配。
1 [ 2 {plot After her son is hospitalized, a doctor cheats on her husband with a snow plow driver who is a suspect in her investigation of the recent death of a young Arab boy.} 3 {title Kissed by Winter} 4 ] 5 [ 6 {plot The American oil company KIC Corporation is building an ice road to explore the remote Northern Arctic National Wildlife Refuge seeking energy independence. Independent environmentalists ...} 7 {title The Last Winter} 8 ] 9 [ 10 {plot A couple engage in discussions with people on the street, politicians and religious leaders about the discrimination against gays and lesbians in Italy.} 11 {title Suddenly, Last Winter} 12 ] 13 [ 14 {plot WINTER is a dangerous, sexy, poignant and at times darkly funny story about two people who desperately want intimacy but have fashioned lives of reclusivity and emotional fracture which ...} 15 {title After Fall, Winter} 16 ] 17 [ 18 {plot Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...} 19 {title Summer Wishes, Winter Dreams} 20 ] 21 [ 22 {plot 1183 AD: King Henry II's three sons all want to inherit the throne, but he won't commit to a choice. They and his wife variously plot to force him.} 23 {title The Lion in Winter} 24 ] 25 [ 26 {plot Felicie and Charles have a serious if whirlwind holiday romance. Due to a mix-up on addresses they lose contact, and five years later at Christmas-time Felicie is living with her mother in ...} 27 {title A Tale of Winter} 28 ] 29 [ 30 {plot A mysterious creature is killing a farmer's livestock.} 31 {title In the Winter Dark} 32 ] 33 [ 34 {plot Sean is a little duck with a big problem. Due to a mishap with a jet aircraft Sean misses the annual migration South and has to face the winter alone. However, he is befriended by a water ...} 35 {title The First Snow of Winter} 36 ] 37 [ 38 {plot A renowned artist must uncover a young dancer's secrets in order to truly capture her likeness for a commissioned work.} 39 {title A Year Ago in Winter} 40 ]
在这些结果中,字符 inter
出现在 title
或 plot
字段中单词的末尾。Atlas Search 返回以指定查询字符串结尾的结果,因为 Atlas Search 会将查询词与其为从单词右侧开始的 title
和 plot
字段创建的词元进行匹配,这些词元由分析器分隔。
1 [ 2 {plot A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.} 3 {title Austin Powers: International Man of Mystery} 4 ] 5 [ 6 {plot On an isolated lake, an old monk lives on a small floating temple. The wise master has also a young boy with him who learns to become a monk. And we watch as seasons and years pass by.} 7 {title Spring, Summer, Fall, Winter... and Spring} 8 ] 9 [ 10 {plot Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...} 11 {title Summer Wishes, Winter Dreams} 12 ] 13 [ 14 {plot A mysterious creature is killing a farmer's livestock.} 15 {title In the Winter Dark} 16 ] 17 [ 18 {plot Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.} 19 {title Richness of Internal Space} 20 ] 21 [ 22 {plot A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.} 23 {title Brief Interviews with Hideous Men} 24 ] 25 [ 26 {plot As Steve Rogers struggles to embrace his role in the modern world, he teams up with another super soldier, the black widow, to battle a new threat from old history: an assassin known as the Winter Soldier.} 27 {title Captain America: The Winter Soldier} 28 ] 29 [ 30 {plot On a cold winter day a mysterious stranger shows up at the Witting Farm. He is John Witting, the father of Jacob Witting who abandoned Jacob and his mother when Jacob was little. Jacob is ...} 31 {title Sarah, Plain and Tall: Winter's End} 32 ] 33 [ 34 {plot The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.} 35 {title The Internet's Own Boy: The Story of Aaron Swartz} 36 ] 37 [ 38 {plot Out of work actor Joe volunteers to help try and save his sister's local church for the community by putting on a Christmas production of Hamlet, somewhat against the advice of his agent ...} 39 {title A Midwinter's Tale} 40 ]
在这些结果中,字符 inter
出现在 title
或 plot
字段中的某个单词中。Atlas Search 返回包含指定查询字符串的单词的结果,因为 Atlas Search 会将查询词与其为 title
和 plot
字段创建的长度介于 3 到 7 个字符之间的标记进行匹配。
1 { 2 "plot" : "Filmmakers James Franco and Travis Mathews re-imagine the lost 40 minutes from \"Cruising\" as a starting point to a broader exploration of sexual and creative freedom.", 3 "title" : "Interior. Leather Bar." 4 } 5 { 6 "plot" : "Almost forty years after the John F. Kennedy assassination, an ex-Marine named Walter Ohlinger has come forward with a startling claim.", 7 "title" : "Interview with the Assassin" 8 } 9 { 10 "plot" : "A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.", 11 "title" : "Brief Interviews with Hideous Men" 12 } 13 { 14 "plot" : "A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.", 15 "title" : "Austin Powers\:\ International Man of Mystery" 16 } 17 { 18 "plot" : "A confused young man (Marsden) takes a journey on a road that doesn't exist on any map.", 19 "title" : "Interstate 60\:\ Episodes of the Road" 20 } 21 { 22 "plot" : "A vampire tells his epic life story\:\ love, betrayal, loneliness, and hunger.", 23 "title" : "Interview with the Vampire\:\ The Vampire Chronicles" 24 } 25 { 26 "plot" : "The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.", 27 "title" : "The Internet's Own Boy\:\ The Story of Aaron Swartz" 28 } 29 { 30 "plot" : "The film chronicles Australian-born opera star Marjorie Lawrence's success, her battle with polio, and her eventual career comeback.", 31 "title" : "Interrupted Melody" 32 } 33 { 34 "plot" : "Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.", 35 "title" : "Richness of Internal Space" 36 } 37 { 38 "plot" : "Three sisters find their lives spinning out of control in the wake of their parents' sudden, unexpected divorce.", 39 "title" : "Interiors" 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中某个词的开头。Atlas Search 返回以指定查询字符串开头的结果,因为 Atlas Search 会将查询词与其为从单词左侧开始的 title
和 plot
字段创建的词元进行匹配。
1 { 2 "plot" : 'After her son is hospitalized, a doctor cheats on her husband with a snow plow driver who is a suspect in her investigation of the recent death of a young Arab boy.', 3 "title" : 'Kissed by Winter' 4 } 5 { 6 "plot" : 'The American oil company KIC Corporation is building an ice road to explore the remote Northern Arctic National Wildlife Refuge seeking energy independence. Independent environmentalists ...', 7 "title" : 'The Last Winter' 8 } 9 { 10 "plot" : 'A couple engage in discussions with people on the street, politicians and religious leaders about the discrimination against gays and lesbians in Italy.', 11 "title" : 'Suddenly, Last Winter' 12 } 13 { 14 "plot" : 'WINTER is a dangerous, sexy, poignant and at times darkly funny story about two people who desperately want intimacy but have fashioned lives of reclusivity and emotional fracture which ...', 15 "title" : 'After Fall, Winter' 16 } 17 { 18 "plot" : 'Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...', 19 "title" : 'Summer Wishes, Winter Dreams' 20 } 21 { 22 "plot" : '1183 AD\:\ King Henry II\'s three sons all want to inherit the throne, but he won\'t commit to a choice. They and his wife variously plot to force him.', 23 "title" : 'The Lion in Winter' 24 } 25 { 26 "plot" : 'Felicie and Charles have a serious if whirlwind holiday romance. Due to a mix-up on addresses they lose contact, and five years later at Christmas-time Felicie is living with her mother in ...', 27 "title" : 'A Tale of Winter' 28 } 29 { 30 "plot" : 'A mysterious creature is killing a farmer\'s livestock.', 31 "title" : 'In the Winter Dark' 32 } 33 { 34 "plot" : 'Sean is a little duck with a big problem. Due to a mishap with a jet aircraft Sean misses the annual migration South and has to face the winter alone. However, he is befriended by a water ...', 35 "title" : 'The First Snow of Winter' 36 } 37 { 38 "plot" : 'A renowned artist must uncover a young dancer\'s secrets in order to truly capture her likeness for a commissioned work.', 39 "title" : 'A Year Ago in Winter' 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中单词的末尾。Atlas Search 返回以指定查询字符串结尾的结果,因为 Atlas Search 会将查询词与其为从单词右侧开始的 title
和 plot
字段创建的词元进行匹配,这些词元由分析器分隔。
1 { 2 "plot": "A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.", 3 "title": "Austin Powers\:\ International Man of Mystery" 4 } 5 { 6 "plot": "On an isolated lake, an old monk lives on a small floating temple. The wise master has also a young boy with him who learns to become a monk. And we watch as seasons and years pass by.", 7 "title": "Spring, Summer, Fall, Winter... and Spring" 8 } 9 { 10 "plot": "Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...", 11 "title": "Summer Wishes, Winter Dreams" 12 } 13 { 14 "plot": "A mysterious creature is killing a farmer's livestock.", 15 "title": "In the Winter Dark" 16 } 17 { 18 "plot": "Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.", 19 "title": "Richness of Internal Space" 20 } 21 { 22 "plot": "A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.", 23 "title": "Brief Interviews with Hideous Men" 24 } 25 { 26 "plot": "As Steve Rogers struggles to embrace his role in the modern world, he teams up with another super soldier, the black widow, to battle a new threat from old history\:\ an assassin known as the Winter Soldier.", 27 "title": "Captain America\:\ The Winter Soldier" 28 } 29 { 30 "plot": "On a cold winter day a mysterious stranger shows up at the Witting Farm. He is John Witting, the father of Jacob Witting who abandoned Jacob and his mother when Jacob was little. Jacob is ...", 31 "title": "Sarah, Plain and Tall\:\ Winter's End" 32 } 33 { 34 "plot": "The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.", 35 "title": "The Internet's Own Boy\:\ The Story of Aaron Swartz" 36 } 37 { 38 "plot": "Out of work actor Joe volunteers to help try and save his sister's local church for the community by putting on a Christmas production of Hamlet, somewhat against the advice of his agent ...", 39 "title": "A Midwinter's Tale" 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中的某个单词中。Atlas Search 返回包含指定查询字符串的单词的结果,因为 Atlas Search 会将查询词与其为 title
和 plot
字段创建的长度介于 3 到 7 个字符之间的标记进行匹配。
1 Document{{plot=Almost forty years after the John F. Kennedy assassination, an ex-Marine named Walter Ohlinger has come forward with a startling claim., title=Interview with the Assassin}} 2 Document{{plot=A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men., title=Brief Interviews with Hideous Men}} 3 Document{{plot=A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place., title=Austin Powers: International Man of Mystery}} 4 Document{{plot=A confused young man (Marsden) takes a journey on a road that doesn't exist on any map., title=Interstate 60: Episodes of the Road}} 5 Document{{plot=A vampire tells his epic life story: love, betrayal, loneliness, and hunger., title=Interview with the Vampire: The Vampire Chronicles}} 6 Document{{plot=The film chronicles Australian-born opera star Marjorie Lawrence's success, her battle with polio, and her eventual career comeback., title=Interrupted Melody}} 7 Document{{plot=The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26., title=The Internet's Own Boy: The Story of Aaron Swartz}} 8 Document{{plot=Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man., title=Richness of Internal Space}} 9 Document{{plot=Vincent Eastman has to choose between his wife of 16 years, Sally, and his new love, Olivia. Frequent flashbacks explain the background to the marriage and the affair., title=Intersection}} 10 Document{{plot=After falling out with his editor, a fading political journalist is forced to interview America's most popular soap actress., title=Interview}}
在这些结果中,字符 inter
出现在 title
或 plot
字段中某个词的开头。Atlas Search 返回以指定查询字符串开头的结果,因为 Atlas Search 会将查询词与其为从单词左侧开始的 title
和 plot
字段创建的词元进行匹配。
1 Document{{plot=A couple engage in discussions with people on the street, politicians and religious leaders about the discrimination against gays and lesbians in Italy., title=Suddenly, Last Winter}} 2 Document{{plot=After her son is hospitalized, a doctor cheats on her husband with a snow plow driver who is a suspect in her investigation of the recent death of a young Arab boy., title=Kissed by Winter}} 3 Document{{plot=WINTER is a dangerous, sexy, poignant and at times darkly funny story about two people who desperately want intimacy but have fashioned lives of reclusivity and emotional fracture which ..., title=After Fall, Winter}} 4 Document{{plot=Felicie and Charles have a serious if whirlwind holiday romance. Due to a mix-up on addresses they lose contact, and five years later at Christmas-time Felicie is living with her mother in ..., title=A Tale of Winter}} 5 Document{{plot=A mysterious creature is killing a farmer's livestock., title=In the Winter Dark}} 6 Document{{plot=Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ..., title=Summer Wishes, Winter Dreams}} 7 Document{{plot=1183 AD: King Henry II's three sons all want to inherit the throne, but he won't commit to a choice. They and his wife variously plot to force him., title=The Lion in Winter}} 8 Document{{plot=As Steve Rogers struggles to embrace his role in the modern world, he teams up with another super soldier, the black widow, to battle a new threat from old history: an assassin known as the Winter Soldier., title=Captain America: The Winter Soldier}} 9 Document{{plot=Sean is a little duck with a big problem. Due to a mishap with a jet aircraft Sean misses the annual migration South and has to face the winter alone. However, he is befriended by a water ..., title=The First Snow of Winter}} 10 Document{{plot=A renowned artist must uncover a young dancer's secrets in order to truly capture her likeness for a commissioned work., title=A Year Ago in Winter}}
在这些结果中,字符 inter
出现在 title
或 plot
字段中单词的末尾。Atlas Search 返回以指定查询字符串结尾的结果,因为 Atlas Search 会将查询词与其为从单词右侧开始的 title
和 plot
字段创建的词元进行匹配,这些词元由分析器分隔。
1 Document{{plot=On an isolated lake, an old monk lives on a small floating temple. The wise master has also a young boy with him who learns to become a monk. And we watch as seasons and years pass by., title=Spring, Summer, Fall, Winter... and Spring}} 2 Document{{plot=A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place., title=Austin Powers: International Man of Mystery}} 3 Document{{plot=Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ..., title=Summer Wishes, Winter Dreams}} 4 Document{{plot=A mysterious creature is killing a farmer's livestock., title=In the Winter Dark}} 5 Document{{plot=Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man., title=Richness of Internal Space}} 6 Document{{plot=A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men., title=Brief Interviews with Hideous Men}} 7 Document{{plot=As Steve Rogers struggles to embrace his role in the modern world, he teams up with another super soldier, the black widow, to battle a new threat from old history: an assassin known as the Winter Soldier., title=Captain America: The Winter Soldier}} 8 Document{{plot=On a cold winter day a mysterious stranger shows up at the Witting Farm. He is John Witting, the father of Jacob Witting who abandoned Jacob and his mother when Jacob was little. Jacob is ..., title=Sarah, Plain and Tall: Winter's End}} 9 Document{{plot=The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26., title=The Internet's Own Boy: The Story of Aaron Swartz}} 10 Document{{plot=Set during World War 2. After Nazi Germany invaded Poland in September 1939, Russia attacked Finland in November 1939. Finnish reservists leave their homes and go to war. The film focuses ..., title=The Winter War}}
在这些结果中,字符 inter
出现在 title
或 plot
字段中的某个单词中。Atlas Search 返回包含指定查询字符串的单词的结果,因为 Atlas Search 会将查询词与其为 title
和 plot
字段创建的长度介于 3 到 7 个字符之间的标记进行匹配。
1 { 2 "plot": "Filmmakers James Franco and Travis Mathews re-imagine the lost 40 minutes from \"Cruising\" as a starting point to a broader exploration of sexual and creative freedom.", 3 "title": "Interior. Leather Bar." 4 } 5 { 6 "plot": "Almost forty years after the John F. Kennedy assassination, an ex-Marine named Walter Ohlinger has come forward with a startling claim.", 7 "title": "Interview with the Assassin" 8 } 9 { 10 "plot": "A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.", 11 "title": "Brief Interviews with Hideous Men" 12 } 13 { 14 "plot": "A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.", 15 "title": "Austin Powers\:\ International Man of Mystery" 16 } 17 { 18 "plot": "A confused young man (Marsden) takes a journey on a road that doesn't exist on any map.", 19 "title": "Interstate 60\:\ Episodes of the Road" 20 } 21 { 22 "plot": "A vampire tells his epic life story\:\ love, betrayal, loneliness, and hunger.", 23 "title": "Interview with the Vampire\:\ The Vampire Chronicles" 24 } 25 { 26 "plot": "The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.", 27 "title": "The Internet's Own Boy\:\ The Story of Aaron Swartz" 28 } 29 { 30 "plot": "The film chronicles Australian-born opera star Marjorie Lawrence's success, her battle with polio, and her eventual career comeback.", 31 "title": "Interrupted Melody" 32 } 33 { 34 "plot": "Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.", 35 "title": "Richness of Internal Space" 36 } 37 { 38 "plot": "Three sisters find their lives spinning out of control in the wake of their parents' sudden, unexpected divorce.", 39 "title": "Interiors" 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中某个词的开头。Atlas Search 返回以指定查询字符串开头的结果,因为 Atlas Search 会将查询词与其为从单词左侧开始的 title
和 plot
字段创建的词元进行匹配。
1 { 2 "plot": "After her son is hospitalized, a doctor cheats on her husband with a snow plow driver who is a suspect in her investigation of the recent death of a young Arab boy.", 3 "title": "Kissed by Winter" 4 } 5 { 6 "plot": "The American oil company KIC Corporation is building an ice road to explore the remote Northern Arctic National Wildlife Refuge seeking energy independence. Independent environmentalists ...", 7 "title": "The Last Winter" 8 } 9 { 10 "plot": "A couple engage in discussions with people on the street, politicians and religious leaders about the discrimination against gays and lesbians in Italy.", 11 "title": "Suddenly, Last Winter" 12 } 13 { 14 "plot": "WINTER is a dangerous, sexy, poignant and at times darkly funny story about two people who desperately want intimacy but have fashioned lives of reclusivity and emotional fracture which ...", 15 "title": "After Fall, Winter" 16 } 17 { 18 "plot": "Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...", 19 "title": "Summer Wishes, Winter Dreams" 20 } 21 { 22 "plot": "1183 AD\:\ King Henry II's three sons all want to inherit the throne, but he won't commit to a choice. They and his wife variously plot to force him.", 23 "title": "The Lion in Winter" 24 } 25 { 26 "plot": "Felicie and Charles have a serious if whirlwind holiday romance. Due to a mix-up on addresses they lose contact, and five years later at Christmas-time Felicie is living with her mother in ...", 27 "title": "A Tale of Winter" 28 } 29 { 30 "plot": "A mysterious creature is killing a farmer's livestock.", 31 "title": "In the Winter Dark" 32 } 33 { 34 "plot": "Sean is a little duck with a big problem. Due to a mishap with a jet aircraft Sean misses the annual migration South and has to face the winter alone. However, he is befriended by a water ...", 35 "title": "The First Snow of Winter" 36 } 37 { 38 "plot": "A renowned artist must uncover a young dancer's secrets in order to truly capture her likeness for a commissioned work.", 39 "title": "A Year Ago in Winter" 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中单词的末尾。Atlas Search 返回以指定查询字符串结尾的结果,因为 Atlas Search 会将查询词与其为从单词右侧开始的 title
和 plot
字段创建的词元进行匹配,这些词元由分析器分隔。
1 { 2 "plot": "A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.", 3 "title": "Austin Powers\:\ International Man of Mystery" 4 } 5 { 6 "plot": "On an isolated lake, an old monk lives on a small floating temple. The wise master has also a young boy with him who learns to become a monk. And we watch as seasons and years pass by.", 7 "title": "Spring, Summer, Fall, Winter... and Spring" 8 } 9 { 10 "plot": "Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...", 11 "title": "Summer Wishes, Winter Dreams" 12 } 13 { 14 "plot": "A mysterious creature is killing a farmer's livestock.", 15 "title": "In the Winter Dark" 16 } 17 { 18 "plot": "Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.", 19 "title": "Richness of Internal Space" 20 } 21 { 22 "plot": "A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.", 23 "title": "Brief Interviews with Hideous Men" 24 } 25 { 26 "plot": "As Steve Rogers struggles to embrace his role in the modern world, he teams up with another super soldier, the black widow, to battle a new threat from old history\:\ an assassin known as the Winter Soldier.", 27 "title": "Captain America\:\ The Winter Soldier" 28 } 29 { 30 "plot": "On a cold winter day a mysterious stranger shows up at the Witting Farm. He is John Witting, the father of Jacob Witting who abandoned Jacob and his mother when Jacob was little. Jacob is ...", 31 "title": "Sarah, Plain and Tall\:\ Winter's End" 32 } 33 { 34 "plot": "The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.", 35 "title": "The Internet's Own Boy\:\ The Story of Aaron Swartz" 36 } 37 { 38 "plot": "Out of work actor Joe volunteers to help try and save his sister's local church for the community by putting on a Christmas production of Hamlet, somewhat against the advice of his agent ...", 39 "title": "A Midwinter's Tale" 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中的某个单词中。Atlas Search 返回包含指定查询字符串的单词的结果,因为 Atlas Search 会将查询词与其为 title
和 plot
字段创建的长度介于 3 到 7 个字符之间的标记进行匹配。
1 { 2 "plot": "Filmmakers James Franco and Travis Mathews re-imagine the lost 40 minutes from \"Cruising\" as a starting point to a broader exploration of sexual and creative freedom.", 3 "title": "Interior. Leather Bar." 4 } 5 { 6 "plot": "Almost forty years after the John F. Kennedy assassination, an ex-Marine named Walter Ohlinger has come forward with a startling claim.", 7 "title": "Interview with the Assassin" 8 } 9 { 10 "plot": "A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.", 11 "title": "Brief Interviews with Hideous Men" 12 } 13 { 14 "plot": "A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.", 15 "title": "Austin Powers\:\ International Man of Mystery" 16 } 17 { 18 "plot": "A confused young man (Marsden) takes a journey on a road that doesn't exist on any map.", 19 "title": "Interstate 60\:\ Episodes of the Road" 20 } 21 { 22 "plot": "A vampire tells his epic life story\:\ love, betrayal, loneliness, and hunger.", 23 "title": "Interview with the Vampire\:\ The Vampire Chronicles" 24 } 25 { 26 "plot": "The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.", 27 "title": "The Internet's Own Boy\:\ The Story of Aaron Swartz" 28 } 29 { 30 "plot": "The film chronicles Australian-born opera star Marjorie Lawrence's success, her battle with polio, and her eventual career comeback.", 31 "title": "Interrupted Melody" 32 } 33 { 34 "plot": "Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.", 35 "title": "Richness of Internal Space" 36 } 37 { 38 "plot": "Three sisters find their lives spinning out of control in the wake of their parents' sudden, unexpected divorce.", 39 "title": "Interiors" 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中某个词的开头。Atlas Search 返回以指定查询字符串开头的结果,因为 Atlas Search 会将查询词与其为从单词左侧开始的 title
和 plot
字段创建的词元进行匹配。
1 { 2 "plot": "After her son is hospitalized, a doctor cheats on her husband with a snow plow driver who is a suspect in her investigation of the recent death of a young Arab boy.", 3 "title": "Kissed by Winter" 4 } 5 { 6 "plot": "The American oil company KIC Corporation is building an ice road to explore the remote Northern Arctic National Wildlife Refuge seeking energy independence. Independent environmentalists ...", 7 "title": "The Last Winter" 8 } 9 { 10 "plot": "A couple engage in discussions with people on the street, politicians and religious leaders about the discrimination against gays and lesbians in Italy.", 11 "title": "Suddenly, Last Winter" 12 } 13 { 14 "plot": "WINTER is a dangerous, sexy, poignant and at times darkly funny story about two people who desperately want intimacy but have fashioned lives of reclusivity and emotional fracture which ...", 15 "title": "After Fall, Winter" 16 } 17 { 18 "plot": "Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...", 19 "title": "Summer Wishes, Winter Dreams" 20 } 21 { 22 "plot": "1183 AD\:\ King Henry II's three sons all want to inherit the throne, but he won't commit to a choice. They and his wife variously plot to force him.", 23 "title": "The Lion in Winter" 24 } 25 { 26 "plot": "Felicie and Charles have a serious if whirlwind holiday romance. Due to a mix-up on addresses they lose contact, and five years later at Christmas-time Felicie is living with her mother in ...", 27 "title": "A Tale of Winter" 28 } 29 { 30 "plot": "A mysterious creature is killing a farmer's livestock.", 31 "title": "In the Winter Dark" 32 } 33 { 34 "plot": "Sean is a little duck with a big problem. Due to a mishap with a jet aircraft Sean misses the annual migration South and has to face the winter alone. However, he is befriended by a water ...", 35 "title": "The First Snow of Winter" 36 } 37 { 38 "plot": "A renowned artist must uncover a young dancer's secrets in order to truly capture her likeness for a commissioned work.", 39 "title": "A Year Ago in Winter" 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中单词的末尾。Atlas Search 返回以指定查询字符串结尾的结果,因为 Atlas Search 会将查询词与其为从单词右侧开始的 title
和 plot
字段创建的词元进行匹配,这些词元由分析器分隔。
1 { 2 "plot": "A 1960s hipster secret agent is brought out of cryofreeze to oppose his greatest enemy in the 1990s, where his social attitudes are glaringly out of place.", 3 "title": "Austin Powers\:\ International Man of Mystery" 4 } 5 { 6 "plot": "On an isolated lake, an old monk lives on a small floating temple. The wise master has also a young boy with him who learns to become a monk. And we watch as seasons and years pass by.", 7 "title": "Spring, Summer, Fall, Winter... and Spring" 8 } 9 { 10 "plot": "Rita, a middle aged New York City homemaker, finds herself in an emotional crisis which forces her to re-examine her life, as well as her relationships with her mother, her eye doctor ...", 11 "title": "Summer Wishes, Winter Dreams" 12 } 13 { 14 "plot": "A mysterious creature is killing a farmer's livestock.", 15 "title": "In the Winter Dark" 16 } 17 { 18 "plot": "Locked up and isolated, constantly exposed and threatened to be killed, for the first time in his life Lazaro understood that he was a free man.", 19 "title": "Richness of Internal Space" 20 } 21 { 22 "plot": "A graduate student (Nicholson) copes with a recent breakup by conducting interviews with various men.", 23 "title": "Brief Interviews with Hideous Men" 24 } 25 { 26 "plot": "As Steve Rogers struggles to embrace his role in the modern world, he teams up with another super soldier, the black widow, to battle a new threat from old history\:\ an assassin known as the Winter Soldier.", 27 "title": "Captain America\:\ The Winter Soldier" 28 } 29 { 30 "plot": "On a cold winter day a mysterious stranger shows up at the Witting Farm. He is John Witting, the father of Jacob Witting who abandoned Jacob and his mother when Jacob was little. Jacob is ...", 31 "title": "Sarah, Plain and Tall\:\ Winter's End" 32 } 33 { 34 "plot": "The story of programming prodigy and information activist Aaron Swartz, who took his own life at the age of 26.", 35 "title": "The Internet's Own Boy\:\ The Story of Aaron Swartz" 36 } 37 { 38 "plot": "Out of work actor Joe volunteers to help try and save his sister's local church for the community by putting on a Christmas production of Hamlet, somewhat against the advice of his agent ...", 39 "title": "A Midwinter's Tale" 40 }
在这些结果中,字符 inter
出现在 title
或 plot
字段中的某个单词中。Atlas Search 返回包含指定查询字符串的单词的结果,因为 Atlas Search 会将查询词与其为 title
和 plot
字段创建的长度介于 3 到 7 个字符之间的标记进行匹配。
通过分面查询对结果分桶
以下查询使用 $searchMeta
阶段返回在 movies
集合的 title
字段中包含 Gravity
一词的电影的唯一值。此查询的索引定义限制了从 stringFacet 索引返回的结果,其中 autocomplete 和 stringFacet 类型都位于 title
字段上。
将以下查询复制并粘贴到 Query Editor 中,然后点击 Query Editor 中的 Search 按钮。
[ { "$searchMeta": { "facet": { "operator": { "autocomplete": { "query": "Gravity", "path": "title" } }, "facets": { "titleFacet": { "type": "string", "path": "title" } } } } } ]
以下查询使用 $searchMeta
阶段返回在 movies
集合的 title
字段中包含 Gravity
一词的电影的唯一值。此查询的索引定义限制了从 stringFacet 索引返回的结果,其中 autocomplete 和 stringFacet 类型都位于 title
字段上。
1 db.movies.aggregate([{ 2 $searchMeta: { 3 "facet": { 4 "operator": { 5 "autocomplete": { 6 "query": "Gravity", 7 "path": "title" 8 } 9 }, 10 "facets": { 11 "titleFacet": { 12 "type": "string", 13 "path": "title" 14 } 15 } 16 } 17 } 18 }])
以下查询使用 $searchMeta
阶段返回在 movies
集合的 title
字段中包含 Gravity
一词的电影的唯一值。此查询的索引定义限制了从 stringFacet 索引返回的结果,其中 autocomplete 和 stringFacet 类型都位于 title
字段上。
在 movies
集合的 Aggregations 标签页中,从下拉菜单中选择阶段并为该阶段添加查询,以配置以下管道阶段。
管道阶段 | 查询 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
以下查询使用 $searchMeta
阶段返回在 movies
集合的 title
字段中包含 Gravity
一词的电影的唯一值。此查询的索引定义限制了从 stringFacet 索引返回的结果,其中 autocomplete 和 stringFacet 类型都位于 title
字段上。
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 AutocompleteFacetExample 8 { 9 private const string MongoConnectionString = "<connection-string>"; 10 11 public static void Main(string[] args) 12 { 13 // allow automapping of the camelCase database fields to our MovieDocument 14 var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; 15 ConventionRegistry.Register("CamelCase", camelCaseConvention, type => true); 16 17 // connect to your Atlas cluster 18 var mongoClient = new MongoClient(MongoConnectionString); 19 var mflixDatabase = mongoClient.GetDatabase("sample_mflix"); 20 var moviesCollection = mflixDatabase.GetCollection<MovieDocument>("movies"); 21 22 // define and run pipeline 23 var results = moviesCollection.Aggregate() 24 .SearchMeta(Builders<MovieDocument>.Search.Facet( 25 Builders<MovieDocument>.Search.Autocomplete(movie => movie.Title, "Gravity"), 26 Builders<MovieDocument>.SearchFacet.String("titleFacet", movie => movie.Title, 100))) 27 .Single(); 28 29 // print results 30 Console.WriteLine(results.ToJson()); 31 } 32 } 33 34 [ ]35 public class MovieDocument 36 { 37 [ ]38 public ObjectId Id { get; set; } 39 public string Title { get; set; } 40 }
以下查询使用 $searchMeta
阶段返回在 movies
集合的 title
字段中包含 Gravity
一词的电影的唯一值。此查询的索引定义限制了从 stringFacet 索引返回的结果,其中 autocomplete 和 stringFacet 类型都位于 title
字段上。
1 package main 2 3 import ( 4 "context" 5 "fmt" 6 7 "go.mongodb.org/mongo-driver/bson" 8 "go.mongodb.org/mongo-driver/mongo" 9 "go.mongodb.org/mongo-driver/mongo/options" 10 ) 11 12 func main() { 13 // connect to your Atlas cluster 14 client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("<connection-string>")) 15 if err != nil { 16 panic(err) 17 } 18 defer client.Disconnect(context.TODO()) 19 20 // set namespace 21 collection := client.Database("sample_mflix").Collection("movies") 22 23 // define pipeline stages 24 searchMetaStage := bson.D{{"$searchMeta", bson.M{ 25 "facet": bson.M{ 26 "operator": bson.M{ 27 "autocomplete": bson.M{ 28 "path": "title", "query": "Gravity", 29 }, 30 }, 31 "facets": bson.M{ 32 "titleFacet": bson.M{ 33 "path": "title", "type": "string", 34 }, 35 }, 36 }, 37 }}} 38 39 // run pipeline 40 cursor, err := collection.Aggregate(context.TODO(), mongo.Pipeline{searchMetaStage}) 41 if err != nil { 42 panic(err) 43 } 44 45 // print results 46 var results []bson.D 47 if err = cursor.All(context.TODO(), &results); err != nil { 48 panic(err) 49 } 50 for _, result := range results { 51 fmt.Println(result) 52 } 53 }
以下查询使用 $searchMeta
阶段返回在 movies
集合的 title
字段中包含 Gravity
一词的电影的唯一值。此查询的索引定义限制了从 stringFacet 索引返回的结果,其中 autocomplete 和 stringFacet 类型都位于 title
字段上。
1 import com.mongodb.client.MongoClient; 2 import com.mongodb.client.MongoClients; 3 import com.mongodb.client.MongoCollection; 4 import com.mongodb.client.MongoDatabase; 5 import org.bson.Document; 6 7 import java.util.Arrays; 8 9 public class FacetAutocompleteExample { 10 public static void main(String[] args) { 11 // connect to your Atlas cluster 12 String uri = "<connection-string>"; 13 14 try (MongoClient mongoClient = MongoClients.create(uri)) { 15 // set namespace 16 MongoDatabase database = mongoClient.getDatabase("sample_mflix"); 17 MongoCollection<Document> collection = database.getCollection("movies"); 18 19 // define pipeline 20 Document agg = new Document("$searchMeta", new Document("facet", 21 new Document("operator", 22 new Document("autocomplete", 23 new Document("path", "title") 24 .append("query", "Gravity"))) 25 .append("facets", 26 new Document("titleFacet", 27 new Document("type", "string").append("path", "title")) 28 ))); 29 // run pipeline and print results 30 collection.aggregate(Arrays.asList(agg)) 31 .forEach(doc -> System.out.println(doc.toJson())); 32 33 } 34 } 35 }
以下查询使用 $searchMeta
阶段返回在 movies
集合的 title
字段中包含 Gravity
一词的电影的唯一值。此查询的索引定义限制了从 stringFacet 索引返回的结果,其中 autocomplete 和 stringFacet 类型都位于 title
字段上。
1 import com.mongodb.client.model.Aggregates.limit 2 import com.mongodb.client.model.Aggregates.project 3 import com.mongodb.client.model.Filters.eq 4 import com.mongodb.client.model.Projections.* 5 import com.mongodb.kotlin.client.coroutine.MongoClient 6 import kotlinx.coroutines.runBlocking 7 import org.bson.Document 8 9 fun main() { 10 val uri = "<connection-string>" 11 val mongoClient = MongoClient.create(uri) 12 val database = mongoClient.getDatabase("sample_mflix") 13 val collection = database.getCollection<Document>("movies") 14 15 runBlocking { 16 val agg = Document( 17 "\$searchMeta", Document( 18 "facet", 19 Document( 20 "operator", 21 Document( 22 "autocomplete", 23 Document("path", "title") 24 .append("query", "Gravity") 25 ) 26 ) 27 .append( 28 "facets", 29 Document( 30 "titleFacet", 31 Document("type", "string").append("path", "title") 32 ) 33 ) 34 ) 35 ) 36 37 val resultsFlow = collection.aggregate<Document>(listOf(agg)) 38 resultsFlow.collect { println(it) } 39 } 40 mongoClient.close() 41 }
以下查询使用 $searchMeta
阶段返回在 movies
集合的 title
字段中包含 Gravity
一词的电影的唯一值。此查询的索引定义限制了从 stringFacet 索引返回的结果,其中 autocomplete 和 stringFacet 类型都位于 title
字段上。
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 = [{$searchMeta: {facet: { 19 operator: { 20 autocomplete: {path: "title", query: "Gravity"} 21 }, 22 facets: { 23 titleFacet: {type: "string", path: "title"} 24 }}}}]; 25 // run pipeline 26 const result = coll.aggregate(agg); 27 28 // print results 29 await result.forEach((doc) => console.dir(JSON.stringify(doc))); 30 } finally { 31 await client.close(); 32 } 33 } 34 run().catch(console.dir);
以下查询使用 $searchMeta
阶段返回在 movies
集合的 title
字段中包含 Gravity
一词的电影的唯一值。此查询的索引定义限制了从 stringFacet 索引返回的结果,其中 autocomplete 和 stringFacet 类型都位于 title
字段上。
1 import pymongo 2 3 # connect to your Atlas cluster 4 client = pymongo.MongoClient('<connection-string>') 5 6 # define pipeline 7 pipeline = [{"$searchMeta": { 8 "facet": { 9 "operator": { 10 "autocomplete": {"path": "title", "query": "Gravity"} 11 }, 12 "facets": { 13 "titleFacet": {"type": "string", "path": "title"} 14 }}}}] 15 # run pipeline 16 result = client["sample_mflix"]["movies"].aggregate(pipeline) 17 18 # print results 19 for i in result: 20 print(i)
count: Object lowerBound: 5 facet: Object titleFacet: Object buckets: Array (3) 0: Object _id: "Gravity" count: 3 1: Object _id: "Defying Gravity" count: 1 2: Object _id: "Laws of Gravity" count: 1
Search Tester 可能不会显示其所返回文档的所有字段。要查看所有字段,包括在查询路径中指定的字段,请展开结果中的文档。
1 [{ 2 count: { lowerBound: Long("5") }, 3 facet: { 4 titleFacet: { 5 buckets: [ 6 { _id: 'Gravity', count: Long("3") }, 7 { _id: 'Defying Gravity', count: Long("1") }, 8 { _id: 'Laws of Gravity', count: Long("1") } 9 ] 10 } 11 } 12 }]
1 [{ 2 count: { lowerBound: Long("5") }, 3 facet: { 4 titleFacet: { 5 buckets: [ 6 { _id: 'Gravity', count: Long("3") }, 7 { _id: 'Defying Gravity', count: Long("1") }, 8 { _id: 'Laws of Gravity', count: Long("1") } 9 ] 10 } 11 } 12 }]
1 { 2 "count" : { 3 "lowerBound" : NumberLong(5), 4 "total" : null 5 }, 6 "facet" : { 7 "titleFacet" : { 8 "buckets" : [ 9 { 10 "_id" : "Gravity", 11 "count" : NumberLong(3) 12 }, 13 { 14 "_id" : "Defying Gravity", 15 "count" : NumberLong(1) 16 }, 17 { 18 "_id" : "Laws of Gravity", 19 "count" : NumberLong(1) 20 }] 21 } 22 } 23 }
1 [ 2 { 3 count [{ 4 lowerBound 5} 5 ] 6 } 7 { 8 facet [{ 9 titleFacet [{ 10 buckets [ 11 [{_id Gravity} {count 3}] 12 [{_id Defying Gravity} {count 1}] 13 [{_id Laws of Gravity} {count 1}] 14 ] 15 }]}] 16 } 17 ]
1 { 2 "count": { 3 "lowerBound": 5 4 }, 5 "facet": { 6 "titleFacet": { 7 "buckets": [ 8 { 9 "_id": "Gravity", 10 "count": 3 11 }, 12 { 13 "_id": "Defying Gravity", 14 "count": 1 15 }, 16 { 17 "_id": "Laws of Gravity", 18 "count": 1 19 }] 20 } 21 } 22 }
1 Document{{count=Document{{lowerBound=5}}, 2 facet=Document{{titleFacet=Document{{buckets=[Document{{_id=Gravity, 3 count=3}}, Document{{_id=Defying Gravity, count=1}}, Document{{_id=Laws 4 of Gravity, count=1}}]}}}}}}
1 '{ 2 "count":{ 3 "lowerBound":5 4 }, 5 "facet":{ 6 "titleFacet":{ 7 "buckets":[ 8 { 9 "_id":"Gravity", 10 "count":3 11 }, 12 { 13 "_id":"Defying Gravity", 14 "count":1 15 }, 16 { 17 "_id":"Laws of Gravity", 18 "count":1 19 } 20 ] 21 } 22 } 23 }'
1 { 2 'count': {'lowerBound': 5}, 3 'facet': { 4 'titleFacet': { 5 'buckets': [ 6 { 7 '_id': 'Gravity', 8 'count': 3 9 }, 10 { 11 '_id': 'Defying Gravity', 12 'count': 1 13 }, 14 { 15 '_id': 'Laws of Gravity', 16 'count': 1 17 }] 18 } 19 } 20 }
Atlas Search 返回在 title
字段中包含 Gravity
一词的文档。结果中的 count
字段指示集合中具有相同标题的文档数。在结果中,Atlas Search 从集合中找到了三个以 Gravity
为标题的文档,但是 Atlas Search 省略了重复的标题,仅返回了一个匹配的文档。
Atlas Search 返回在 title
字段中包含 Gravity
一词的文档。结果中的 count
字段指示集合中具有相同标题的文档数。在结果中,Atlas Search 从集合中找到了三个以 Gravity
为标题的文档,但是 Atlas Search 省略了重复的标题,仅返回了一个匹配的文档。
如果您想看到如下结果中显示的重复标题,请在不使用分面情况下运行前面的 autocomplete 操作符查询,并使用 $search
阶段。您还必须使用 $project
阶段排除 title
以外的所有字段。
[ { title: 'Gravity' }, { title: 'Gravity' }, { title: 'Gravity' }, { title: 'Defying Gravity' }, { title: 'Laws of Gravity' } ]
Atlas Search 返回在 title
字段中包含 Gravity
一词的文档。结果中的 count
字段指示集合中具有相同标题的文档数。在结果中,Atlas Search 从集合中找到了三个以 Gravity
为标题的文档,但是 Atlas Search 省略了重复的标题,仅返回了一个匹配的文档。
如果您想看到如下结果中显示的重复标题,请在不使用分面情况下运行前面的 autocomplete 操作符查询,并使用 $search
阶段。您还必须使用 $project
阶段排除 title
以外的所有字段。
[ { title: 'Gravity' }, { title: 'Gravity' }, { title: 'Gravity' }, { title: 'Defying Gravity' }, { title: 'Laws of Gravity' } ]
Atlas Search 返回在 title
字段中包含 Gravity
一词的文档。结果中的 count
字段指示集合中具有相同标题的文档数。在结果中,Atlas Search 从集合中找到了三个以 Gravity
为标题的文档,但是 Atlas Search 省略了重复的标题,仅返回了一个匹配的文档。
如果您想看到如下结果中显示的重复标题,请在不使用分面情况下运行前面的 autocomplete 操作符查询,并使用 $search
阶段。您还必须使用 $project
阶段排除 title
以外的所有字段。
{ "title" : "Gravity" } { "title" : "Gravity" } { "title" : "Gravity" } { "title" : "Defying Gravity" } { "title" : "Laws of Gravity" }
Atlas Search 返回在 title
字段中包含 Gravity
一词的文档。结果中的 count
字段指示集合中具有相同标题的文档数。在结果中,Atlas Search 从集合中找到了三个以 Gravity
为标题的文档,但是 Atlas Search 省略了重复的标题,仅返回了一个匹配的文档。
如果您想看到如下结果中显示的重复标题,请在不使用分面情况下运行前面的 autocomplete 操作符查询,并使用 $search
阶段。您还必须使用 $project
阶段排除 title
以外的所有字段。
[{title Gravity}], [{title Gravity}], [{title Gravity}], [{title Defying Gravity}], [{title Laws of Gravity}]
Atlas Search 返回在 title
字段中包含 Gravity
一词的文档。结果中的 count
字段指示集合中具有相同标题的文档数。在结果中,Atlas Search 从集合中找到了三个以 Gravity
为标题的文档,但是 Atlas Search 省略了重复的标题,仅返回了一个匹配的文档。
如果您想看到如下结果中显示的重复标题,请在不使用分面情况下运行前面的 autocomplete 操作符查询,并使用 $search
阶段。您还必须使用 $project
阶段排除 title
以外的所有字段。
{"title": "Gravity"} {"title": "Gravity"} {"title": "Gravity"} {"title": "Defying Gravity"} {"title": "Laws of Gravity"}
Atlas Search 返回在 title
字段中包含 Gravity
一词的文档。结果中的 count
字段指示集合中具有相同标题的文档数。在结果中,Atlas Search 从集合中找到了三个以 Gravity
为标题的文档,但是 Atlas Search 省略了重复的标题,仅返回了一个匹配的文档。
如果您想看到如下结果中显示的重复标题,请在不使用分面情况下运行前面的 autocomplete 操作符查询,并使用 $search
阶段。您还必须使用 $project
阶段排除 title
以外的所有字段。
Document{{title=Gravity}} Document{{title=Gravity}} Document{{title=Gravity}} Document{{title=Defying Gravity}} Document{{title=Laws of Gravity}}
Atlas Search 返回在 title
字段中包含 Gravity
一词的文档。结果中的 count
字段指示集合中具有相同标题的文档数。在结果中,Atlas Search 从集合中找到了三个以 Gravity
为标题的文档,但是 Atlas Search 省略了重复的标题,仅返回了一个匹配的文档。
如果您想看到如下结果中显示的重复标题,请在不使用分面情况下运行前面的 autocomplete 操作符查询,并使用 $search
阶段。您还必须使用 $project
阶段排除 title
以外的所有字段。
{ title: 'Gravity' } { title: 'Gravity' } { title: 'Gravity' } { title: 'Defying Gravity' } { title: 'Laws of Gravity' }
Atlas Search 返回在 title
字段中包含 Gravity
一词的文档。结果中的 count
字段指示集合中具有相同标题的文档数。在结果中,Atlas Search 从集合中找到了三个以 Gravity
为标题的文档,但是 Atlas Search 省略了重复的标题,仅返回了一个匹配的文档。
如果您想看到如下结果中显示的重复标题,请在不使用分面情况下运行前面的 autocomplete 操作符查询,并使用 $search
阶段。您还必须使用 $project
阶段排除 title
以外的所有字段。
{ 'title': 'Gravity' } { 'title': 'Gravity' } { 'title': 'Gravity' } { 'title': 'Defying Gravity' } { 'title': 'Laws of Gravity' }