Нужна ORM для коллекций JOIN MongoDB - PullRequest
0 голосов
/ 20 марта 2012

Мне нужно создать скрипт на Python, который, подобно параметрам, имеет имя первой коллекции и имя второй коллекции (коллекции MongoDB в БД).Мне нужно выполнить JOIN между этими двумя коллекциями для некоторых переданных имен полей (я не знаю структуру коллекций и должен быть достаточно универсальным).Я посмотрел на ORM, такие как Ming, MongoKit, MongoAlchemy, MongoEngine и minimongo http://api.mongodb.org/python/current/tools.html#orm-like-layers Кто-нибудь имеет опыт работы с какими-либо из этих ORM и JOINS, какой-нибудь совет, например?

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Маловероятно, что решение MongoDB mapper / ORM допускает поведение, подобное JOIN, так как это функция, связанная с реляционными базами данных, и нет места в ORM на основе NoSQL (например, в MongoDB нет способа сделать их согласованно). Честно говоря, если ORM действительно реализует для вас поведение, подобное JOIN, я, вероятно, считаю это недостатком дизайна.

Что мешает вам самостоятельно реализовать запрошенную функциональность в вашем скрипте py?

1 голос
/ 20 марта 2012

Присоединение - это не то, что вы ищете, поскольку вы не можете делать объединения.Что обычно доступно в драйверах или ORM / ODM (таких как Morphia для Java и Mongoid для Ruby) - это справочник, в котором есть идентификатор или список идентификаторов, которые указывают на объекты в другой коллекции.Затем, как правило, существует вспомогательная функция для разыменования (выполнить другой запрос для ссылки), так что вы можете вернуть этот содержащийся объект без необходимости делать это явно.

На самом деле в драйвере python есть функция, которая позволяет делать это автоматически.Вот пример (обновлен до модульного теста - другой пример был старым): https://github.com/mongodb/mongo-python-driver/blob/master/test/test_dbref.py

...