沈阳市建设工程信息网站,百度热度榜搜索趋势,长沙免费旅游景点大全,修改wordpress文章idMongoDB CRUD操作#xff1a; 在本地实例进行文本搜索查询 文章目录 MongoDB CRUD操作#xff1a; 在本地实例进行文本搜索查询举例创建集合创建文本索引精准搜索排除短语结果排序 在本地实例运行文本搜索查询前#xff0c;必须先在集合上建立文本索引。MongoDB提供文本索引…MongoDB CRUD操作 在本地实例进行文本搜索查询 文章目录 MongoDB CRUD操作 在本地实例进行文本搜索查询举例创建集合创建文本索引精准搜索排除短语结果排序 在本地实例运行文本搜索查询前必须先在集合上建立文本索引。MongoDB提供文本索引支持对字符串内容的文本搜索查询。文本索引可以包含任何值为字符串或字符串元素数组的字段。一个集合只能有一个文本搜索索引但索引可以有多个字段。 举例
下面的示例演示了如何建立文本索引并利用它根据文本字段查找咖啡店。
创建集合
使用下面的脚本创建stores集合
db.stores.insertMany([{ _id: 1, name: Java Hut, description: Coffee and cakes },{ _id: 2, name: Burger Buns, description: Gourmet hamburgers },{ _id: 3, name: Coffee Shop, description: Just coffee },{ _id: 4, name: Clothes Clothes Clothes, description: Discount clothing },{ _id: 5, name: Java Shopping, description: Indonesian goods }]
)创建文本索引
在mongosh中运行下面的命令对名称和描述字段创建索引
db.stores.createIndex( { name: text, description: text } )精准搜索
可以通过用双引号将要搜搜的文本引起来进行精确搜索如果$search字符串包含短语和单个术语则文本搜索将仅匹配包含该短语的文档。
例如以下命令将查找包含coffee shop的所有文档
db.stores.find( { $text: { $search: \coffee shop\ } } )排除短语
可以在前面加上一个-字符来排除一个单词。例如要查找所有包含java或shop但不包含coffee 的商店使用下面的命令
db.stores.find( { $text: { $search: java shop -coffee } } )结果排序
默认情况下MongoDB以未排序的方式返回结果不过文本搜索查询会为每个文档计算一个相关性得分以确定文档与查询的匹配程度。
要按相关性得分排序结果必须显式地投影$meta textScore字段并根据它排序
db.stores.find({ $text: { $search: java coffee shop } },{ score: { $meta: textScore } }
).sort( { score: { $meta: textScore } } )聚合管道中也支持文本搜索。