Выбор из 2 коллекций

26 views
Skip to first unread message

Alex T

unread,
Mar 18, 2014, 9:16:25 AM3/18/14
to mongodb-us...@googlegroups.com
Добрый день. 
Дано 
2 коллекции (Коллекция А и коллекция В). В коллекции В хранится ссылка на коллекцию А.
Задача
Сделать вывод данных из коллекции А и В, при этом должная быть возможность фильтровать данные.

Serge Matveenko

unread,
Mar 18, 2014, 9:22:06 AM3/18/14
to mongodb-us...@googlegroups.com
Эээ... А можно подробнее? В чем сложность вывода данных из каждой
коллекции, как вы хотите фильтровать данные? Как слова о ссылке
соотносятся с последующим текстом? Каким образом созданы ссылки: DBRef
или просто по id?

Какую конкретно проблему вы не можете решить прочитав документацию?

Пока решение такое: делайте вывод данных из коллекций A и B, при этом
с возможностью фильтровать данные.
> --
> You received this message because you are subscribed to the Google Groups
> "MongoDB по-русски" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to mongodb-user-rus...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.



--
Serge Matveenko
mailto: se...@matveenko.ru
github: http://lnkfy.com/1
linkedin: http://lnkfy.com/S

Пародуй.рф -- http://www.parodui.ru/
Специализированный магазин электронных сигарет
СПб, Ленинский проспект 79 корп. 3, +7 (812) 951-25-24

Alex T

unread,
Mar 18, 2014, 10:17:44 AM3/18/14
to mongodb-us...@googlegroups.com
Ссылка сделана с помощью DBRef. 
Хорошо смотрите вот какой пример. Коллекция А - это магазин, коллекция B - некие задания  которые относятся к магазину.
Например мне нужно вывести все магазины у которых нет заданий, и магазины у которых есть задания со статусом "выполнен"
ну или вывести задания со статусом "выполнен" и на рассмотрении

вторник, 18 марта 2014 г., 15:16:25 UTC+2 пользователь Alex T написал:

Serge Matveenko

unread,
Mar 18, 2014, 10:23:51 AM3/18/14
to mongodb-us...@googlegroups.com
Ну, join-ов нет. Поэтому делаем выборку из B, а потом оттуда вынимаем
id-шники магазинов и выводим.

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

Вообще, не факт, что задания не должны быть частью коллекции магазинов.

DBRef-ы умеют заменять данными всякие фреймворки вокруг MongoDB.

Vladimir Mukhin

unread,
Mar 18, 2014, 10:25:10 AM3/18/14
to mongodb-us...@googlegroups.com
Могу порекомендовать хранить статус “задания” вместе со ссылкой, вложив это все в документ, описывающий “магазин”. Вообще говоря, отдельная коллекция для “заданий” тут не очень-то и нужна - если только не ожидается, что суммарный размер документа “магазин” превысит 16 Мбайт.


--
Vladimir Mukhin @ MongoDB
> --
> You received this message because you are subscribed to the Google Groups "MongoDB по-русски" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user-rus...@googlegroups.com (mailto:mongodb-user-rus...@googlegroups.com).

Денис Захаров

unread,
Mar 18, 2014, 10:26:23 AM3/18/14
to mongodb-us...@googlegroups.com
коллекция не является таблицей. в ней можно хранить документы разных типов, рекомендую подумать и в эту сторону тоже


18 марта 2014 г., 18:25 пользователь Vladimir Mukhin <vladimi...@mongodb.com> написал:
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user-rus...@googlegroups.com.

Vladimir Mukhin

unread,
Mar 18, 2014, 10:40:16 AM3/18/14
to mongodb-us...@googlegroups.com
Ну, естественно, можно вообще все данные в системе слить в одну коллекцию :-)

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


--
Vladimir Mukhin @ MongoDB


On Tuesday, March 18, 2014 at 10:26 AM, Денис Захаров wrote:

> коллекция не является таблицей. в ней можно хранить документы разных типов, рекомендую подумать и в эту сторону тоже
>
>
> 18 марта 2014 г., 18:25 пользователь Vladimir Mukhin <vladimi...@mongodb.com (mailto:vladimi...@mongodb.com)> написал:
> > Могу порекомендовать хранить статус “задания” вместе со ссылкой, вложив это все в документ, описывающий “магазин”. Вообще говоря, отдельная коллекция для “заданий” тут не очень-то и нужна - если только не ожидается, что суммарный размер документа “магазин” превысит 16 Мбайт.
> >
> >
> > --
> > Vladimir Mukhin @ MongoDB
> >
> >
> > On Tuesday, March 18, 2014 at 10:17 AM, Alex T wrote:
> >
> > > Ссылка сделана с помощью DBRef.
> > > Хорошо смотрите вот какой пример. Коллекция А - это магазин, коллекция B - некие задания которые относятся к магазину.
> > > Например мне нужно вывести все магазины у которых нет заданий, и магазины у которых есть задания со статусом "выполнен"
> > > ну или вывести задания со статусом "выполнен" и на рассмотрении
> > >
> > > вторник, 18 марта 2014 г., 15:16:25 UTC+2 пользователь Alex T написал:
> > > > Добрый день.
> > > > Дано
> > > > 2 коллекции (Коллекция А и коллекция В). В коллекции В хранится ссылка на коллекцию А.
> > > > Задача
> > > > Сделать вывод данных из коллекции А и В, при этом должная быть возможность фильтровать данные.
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > --
> > > You received this message because you are subscribed to the Google Groups "MongoDB по-русски" group.
> > > To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user-rus...@googlegroups.com (mailto:mongodb-user-russian%2Bunsu...@googlegroups.com) (mailto:mongodb-user-rus...@googlegroups.com (mailto:mongodb-user-russian%2Bunsu...@googlegroups.com)).
> > > For more options, visit https://groups.google.com/d/optout.
> >
> >
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups "MongoDB по-русски" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user-rus...@googlegroups.com (mailto:mongodb-user-russian%2Bunsu...@googlegroups.com).

Денис Захаров

unread,
Mar 18, 2014, 10:43:15 AM3/18/14
to mongodb-us...@googlegroups.com
В данном вопросе я доверю разработчикам монги, смотрите вебинары. Все данные системы не нужно сваливать в одну коллекцию. Только так, что бы было удобно выбирать.


18 марта 2014 г., 18:40 пользователь Vladimir Mukhin <vladimi...@mongodb.com> написал:
To unsubscribe from this group and stop receiving emails from it, send an email to mongodb-user-rus...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages