Как объединить (в смысле INNER JOIN из SQL) две коллекции MongoDB в Python? Нужно ли мне использовать собственный код javascript map / reduce или делать это в PyMongo? Как решить эту проблему с меньшим количеством кода?
Как присоединиться к коллекциям MongoDB в Python?
Ответы (3)
Mongo хранит данные иначе, чем в традиционной реляционной базе данных, и не поддерживает объединения таблиц, как это можно было бы использовать в базе данных SQL. Об этом есть примечание в документации «Ссылки на базы данных». http://www.mongodb.org/display/DOCS/Database+References
По возможности предпочтительно хранить все данные в одной коллекции. Если это невозможно, необходимо будет выполнить отдельные запросы ко всем базам данных, а данные объединить программно.
Согласно документации, можно связывать документы в отдельных коллекциях напрямую или со ссылками на базы данных. Для каждой коллекции все равно придется выполнять отдельные запросы.
Подобные вопросы задавались и раньше. (Я добавил несколько ссылок ниже.) Надеюсь, ответы дадут вам дополнительное представление о том, как данные хранятся в MongoDB, и как вы можете реструктурировать свои документы и / или запросы таким образом, чтобы вы могли извлекать данные, которые вам нужны, с наименьшим количеством количество запросов к базе данных.
Удачи!
Как выполнить эквивалент SQL-соединения в MongoDB? < / а>
Как присоединиться к запросу в mongodb?
«Вопрос новичка относительно присоединений» http://groups.google.com/group/mongodb-user/browse_thread/thread/edfcf8bd270274f9/
Вы можете использовать MongoJoin.
pip install mongojoin
Создайте объект MongoCollection:
collection = MongoCollection("db_name",
"collection_name",
["collection_select_key_1", "collection_select_key_2"],
{filter_key : filter_value})
MongoDB версии 4 теперь, похоже, поддерживает JOIN operation с оператором $lookup, который вы должны вызывать внутри конвейера агрегации. Однако, похоже, это не реализовано в драйвере pymongo, поскольку в конечном итоге он ничего не производил из скрипта python.