Для выполнения выборки из двух коллекций в MongoDB чаще всего используется операция агрегации. В MongoDB операции агрегации позволяют комбинировать данные из нескольких коллекций, применять разнообразные преобразования к данным и выполнять агрегационные функции.
Для примера, давайте рассмотрим ситуацию, когда у нас есть две коллекции: "users" и "orders". Коллекция "users" содержит информацию о пользователях, а коллекция "orders" - информацию о заказах, причем каждый документ в коллекции "orders" имеет поле "userId", по которому можно связать его с конкретным пользователем из коллекции "users".
Для объединения данных из обеих коллекций можно воспользоваться операцией $lookup, которая выполняет операцию "left outer join" между документами двух коллекций. Ниже приведен пример запроса на языке запросов MongoDB, который объединяет данные из коллекций "users" и "orders":
db.users.aggregate([ { $lookup: { from: "orders", localField: "_id", foreignField: "userId", as: "userOrders" } }, { $unwind: "$userOrders" }, { $project: { _id: 1, name: 1, email: 1, orderDate: "$userOrders.date", totalAmount: "$userOrders.amount" } } ])
В данном запросе мы объединяем коллекцию "users" с коллекцией "orders" по полю "_id" из "users" и "userId" из "orders". Далее мы разворачиваем объединенный массив "userOrders" и проецируем нужные нам поля, например, имя пользователя, email, дату заказа и общую сумму заказа.
Таким образом, операция агрегации с использованием $lookup позволяет сделать выборку из двух коллекций в MongoDB, объединив данные по определенному условию.