我有一个数据集(1100万行),其中包括支付给公司的款项,结构如下:
id : 12345678,
company_id : 123456,
payment_value : 50,
payer_id: 111111,
payment_date: "20/01/2017"
payer_name: "John Smith",
...<70ish more columns with mostly blank data>...
有60万个公司ID,我想将其分组,并显示支付总额最高的公司ID
这是我拥有的mongo shell(db版本:4.0.1)代码:
db.pay.aggregate([
{$project: {_id:1, company_id:1, payment_value:1}},
{$group: {_id: "$company_id", total_value: {$sum: "$payment_value"}}},
{$sort: {total_value: -1},
{$limit: 1}],
{allowDiskUse: true})
它不会在45分钟内运行!我有一个关于公司ID的索引,这看起来像是一个直接的查询
我把它加载到Postgresdb中并写道:
SELECT
company_id,
SUM(payment_value)
FROM payments
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1
这花了1秒钟。我对mongodb collection和postgres表使用相同的索引方法
我在这里对MongoDB做了什么错误?
谢谢你抽出时间