2016-10-21 2 views
-1

Мы используем экземпляр MongoDB для некоторых наших данных о ценах, и я хотел бы найти последнее обновление цены для каждого продукта, который у меня есть в базе данных.MongoDB - это предотвращение агрегации по простому запросу

Исходя из фона SQL, моя первоначальная мысль заключалась в том, что для создания запроса с подзапросом, где подзапрос представляет собой группу по запросу. В подзапросах обновления цены сгруппированы по продукту, а затем можно найти самое последнее обновление для каждого обновления цены.

Я говорил с коллегой об этом подходе, и он утверждал, что в официальном учебном материале от MongoDB говорится, что следует предпочесть простые запросы по агрегированным. то есть он будет запускать запрос для каждого продукта, а затем найти последнее обновление цены, заказывая их по дате обновления. Таким образом, количество запросов будет линейным по сравнению с количеством продуктов.

Я согласен с тем, что проще написать такой запрос, а не агрегированный, но я бы подумал, что производительность была бы более быстрой, чтобы пройти коллекцию один раз и найти запросы, то есть количество запросы будут постоянными по сравнению с количеством продуктов.

Он также утверждает, что mongodb также сможет лучше оптимизировать работу при выполнении простых запросов при работе в кластере.

Кто-нибудь знает, если это так?

Я попытался найти в Интернете, и я не могу найти такое утверждение, что нужно предпочитать простые запросы по агрегированным.

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

Любой, кто может пролить свет на эти вопросы?

Заранее спасибо

ответ

0

Вот некоторая информация о агрегации трубопровода на sharded реализации MongoDB

Aggregation Pipeline and Sharded Collections

Если у вас есть правильные индексы в месте на вашей коллекции, вы не должны иметь любые проблемы с использованием агрегации MongoDB.

Смежные вопросы