MongoDB文本搜索聚合函数使用

2023-04-14 15:52:52 浏览数 (1)

$match

$match函数用于对文本进行匹配搜索,例如:

代码语言:javascript复制
db.articles.aggregate([
   { $match: { $text: { $search: "database" } } },
   { $group: { _id: "$author", count: { $sum: 1 } } }
])

这个命令将在articles集合中搜索包含关键词“database”的文章,然后按照作者进行分组,并计算每个作者的文章数量。

$sortByCount

$sortByCount函数用于按照文本匹配的结果进行排序,例如:

代码语言:javascript复制
db.articles.aggregate([
   { $match: { $text: { $search: "database" } } },
   { $sortByCount: "$author" }
])

这个命令将在articles集合中搜索包含关键词“database”的文章,然后按照作者进行分组,并按照文章数量进行排序。

$project

$project函数用于将搜索结果中的字段进行投影,例如:

代码语言:javascript复制
db.articles.aggregate([
   { $match: { $text: { $search: "database" } } },
   { $sortByCount: "$author" },
   { $project: { author: "$_id", count: 1, _id: 0 } }
])

这个命令将在articles集合中搜索包含关键词“database”的文章,然后按照作者进行分组,并按照文章数量进行排序,最后投影出作者和文章数量字段。

$text

$text函数用于指定需要搜索的文本字段和搜索条件,例如:

代码语言:javascript复制
db.articles.aggregate([
   { $match: { $text: { $search: "database" } } },
   { $sortByCount: "$author" },
   { $project: { author: "$_id", count: 1, _id: 0 } },
   { $text: { $search: "relational" } }
])

这个命令将在articles集合中搜索包含关键词“database”的文章,然后按照作者进行分组,并按照文章数量进行排序,最后投影出作者和文章数量字段,然后再在搜索结果中搜索包含关键词“relational”的文章。

0 人点赞