【发布时间】:2019-02-28 22:36:41
【问题描述】:
我在 MongoDB 中有一个这样的 Order 集合:
{"user_id": 1, "order_id": 1, "order_value": 1000, "createdAt": "2018-09-22T10:32:43.566Z"}
{"user_id": 1, "order_id": 2, "order_value": 2000, "createdAt": "2018-09-23T10:32:43.566Z"}
{"user_id": 2, "order_id": 3, "order_value": 500, "createdAt": "2018-09-24T10:32:43.566Z"}
{"user_id": 2, "order_id": 4, "order_value": 1500, "createdAt": "2018-09-24T10:32:43.566Z"}
问题也很简单,就是按“user_id”计算每个月的总订单价值组:
{"user_id": 1, "total_order_value": 3000, "year": "2018", "month": "09"}
{"user_id": 2, "total_order_value": 2000, "year": "2018", "month": "09"}
我知道并且已经使用的解决方案是在 MongoDB 中使用聚合。但是当用户数和订单数增加十万甚至百万文档时,查询很快就会变慢(查询将由Nodejs服务器执行)。分页也是一个选项,但我需要将所有用户的所有订单值提取到工作表中。
所以,我想针对我的问题以及数据库设计寻求一些建议和进展。非常感谢!
【问题讨论】:
-
本地测试时查询的大小是多少?
-
您可以发布您当前使用的聚合查询吗?你的收藏有索引吗
-
是的,我已经在订单架构中索引了“user_id”
标签: node.js database mongodb mongoose nosql