【发布时间】:2020-06-23 13:35:22
【问题描述】:
我有一个包含超过 1000 万条记录的集合,我需要匹配特定字段并获取 记录集的不同 _id。
在 $match 管道之后,结果集变得少于 500 万。 如果我用 id 分组来获取唯一的 id,我本地环境的执行时间超过 20 秒。
db.getCollection('viewscounts').aggregate(
[
{
$match: {
MODULE_ID: 4,
}
},
{
$group: {
_id: '$ITEM_ID',
}
}
], { allowDiskUse: true })
- 如果我去掉 $match 或 $group 并且只有 1 个管道,则执行时间小于 0.1 秒。
我可以限制 _id,但它们应该是唯一的。
谁能提出更好的方法来更快地获得结果?
【问题讨论】:
-
你能解释一下变量和条件
VIEWED_DATE: 3 === 3是什么以及它的用途吗? -
嗨@hhharsha36 别担心,它是一个条件匹配,添加这种情况以进入真实路径以进行测试。我已经删除了整个声明。
标签: mongodb mongodb-query aggregation-framework aggregate query-optimization