Как присоединиться к коллекциям MongoDB в Python?

Как объединить (в смысле INNER JOIN из SQL) две коллекции MongoDB в Python? Нужно ли мне использовать собственный код javascript map / reduce или делать это в PyMongo? Как решить эту проблему с меньшим количеством кода?


person Damir    schedule 19.03.2012    source источник


Ответы (3)


Mongo хранит данные иначе, чем в традиционной реляционной базе данных, и не поддерживает объединения таблиц, как это можно было бы использовать в базе данных SQL. Об этом есть примечание в документации «Ссылки на базы данных». http://www.mongodb.org/display/DOCS/Database+References

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

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

Подобные вопросы задавались и раньше. (Я добавил несколько ссылок ниже.) Надеюсь, ответы дадут вам дополнительное представление о том, как данные хранятся в MongoDB, и как вы можете реструктурировать свои документы и / или запросы таким образом, чтобы вы могли извлекать данные, которые вам нужны, с наименьшим количеством количество запросов к базе данных.

Удачи!

MongoDB и присоединяется

Как выполнить эквивалент SQL-соединения в MongoDB? < / а>

Как присоединиться к запросу в mongodb?

«Вопрос новичка относительно присоединений» http://groups.google.com/group/mongodb-user/browse_thread/thread/edfcf8bd270274f9/

person Marc    schedule 19.03.2012

Вы можете использовать MongoJoin.

pip install mongojoin

Создайте объект MongoCollection:

collection = MongoCollection("db_name", "collection_name", ["collection_select_key_1", "collection_select_key_2"], {filter_key : filter_value})

person jeremybcenteno    schedule 14.06.2018

MongoDB версии 4 теперь, похоже, поддерживает JOIN operation с оператором $lookup, который вы должны вызывать внутри конвейера агрегации. Однако, похоже, это не реализовано в драйвере pymongo, поскольку в конечном итоге он ничего не производил из скрипта python.

person c24b    schedule 20.09.2019