gpt4 book ai didi

MongoDB 按数组大小对大量文档进行排序

转载 作者:可可西里 更新时间:2023-11-01 10:49:38 24 4
gpt4 key购买 nike

我有一个文章集合,其中存储了一个列表标签,如下所示:

    {
id: 1,
title: "Sample title"
tags: ["tag1", "tag2", "tag3", "tag4"]
}

为了将文章与用户的兴趣相匹配,我使用聚合“match”和“setIntersection”计算用户兴趣和文章标签之间有多少共同标签,然后对它们进行排序以获得最佳匹配。

  db.article.aggregate([
{
"$match": {
{"tags": {"$in": ["tags", ["tag1", ..., "tag100"]}}
}
},
{
"$project": {
"tags_match": {
"$setIntersection": ["tags", ["tag1", ..., "tag100"]]
},
}
},
{
"$project": {
"tags_match_size": {
"$size": "$tags_match"
},
}
},
{"$sort": {"tags_match_size" : 1}}
{ "$limit" : 40 }
]
);

如果我在文章集合中有几百个文档,它就可以正常工作。现在我有大约 100 万篇文章,大约需要半个小时才能完成。

我无法为“tags_match_size”创建索引以加快运行速度,因为它是聚合查询中的新字段。

如何使查询运行得更快?谢谢。

最佳答案

为标签字段创建索引。索引仅适用于第一个 $ 匹配项。

关于MongoDB 按数组大小对大量文档进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43319160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com