【发布时间】:2021-06-23 04:57:15
【问题描述】:
我有一个 MongoDB 数据库,其中包含文档级别的单词频率,如下所示。我有大约 175k 个相同格式的文档,总计大约 2.5GB。
{
"_id": xxx,
"title": "zzz",
"vectors": {
"word1": 28,
"word2": 22,
"word3": 12,
"word4": 7,
"word5": 4
}
现在我想遍历所有文档,计算每个单词的所有频率之和,并根据频率获得我在vectors 字段中的这些单词的总排名:
{
"vectors": {
"word1": 223458,
"word2": 98562,
"word3": 76433,
"word4": 4570,
"word5": 2599
}
$unwind 似乎在这里不起作用,因为我有一个嵌套字典。我对 MongoDB 比较陌生,我找不到具体的答案。有什么想法吗?
【问题讨论】:
-
你只有5个字或者它的动态?
-
它是动态的,每个文档 500 到 1500 个字。
-
如果您有至少 500 个属性,我认为在 mongodb 中没有更好的方法来执行此操作,请查看 hhharsha36 的答案,但它的速度不会很好,因为根据您的数据。
-
确实很慢,每个查询需要 5 到 10 分钟。在找到更好的解决方案之前,我会坚持@hhharsha36 的回答。
标签: python mongodb aggregation-framework pymongo