$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”的文章。