MongoDB - Как сделать запрос в большой базе данных - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть коллекция заказов в MongoDB, например:

{"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"}

Решение, которое я знаю и уже использовал, заключается в использовании Aggregation в MongoDB.Но когда число пользователей и заказов увеличится на сотни тысяч или даже миллион документов, запрос вскоре будет замедлен (запрос будет выполняться сервером Nodejs).Разбивка на страницы - это тоже вариант, но мне нужно извлечь всю стоимость заказа для всех пользователей в лист.

Итак, я хочу попросить несколько предложений и предложений по моей проблеме, а также по дизайну базы данных.Большое спасибо позже!

1 Ответ

0 голосов
/ 25 сентября 2018

нумерация страниц может быть тем, что вы ищете, и, поскольку вы комбинируете его с синхронным node.js, вы можете легко выполнять несколько запросов разбиения на страницы, ограничивая время.это будет немного тяжелее с производительностью, но я думаю, вы легко справитесь с этим.

вот дополнительная информация об этом:
https://github.com/edwardhotchkiss/mongoose-paginate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...