#mongodb #mongodb-query
#mongodb #mongodb-запрос
Вопрос:
Есть ли способ объединить две находки в MongoDB, аналогичные подзапросам SQL?
Что было бы эквивалентом чего-то вроде:
SELECT * FROM TABLE1 WHERE name = (SELECT name FROM TABLE2 WHERE surname = 'Smith');
Мне нужно получить uuid из одной коллекции при поиске по электронной почте, а затем использовать его для фильтрации в другой. Я хотел бы, если возможно, сделать это с помощью всего одного поиска вместо получения uuid, сохранить его в переменной, а затем выполнить поиск во второй раз, используя переменную…
Вот два, которые я хочу как-то объединить:
db.getCollection('person').find({email:'perry.goodwin@yahoo.com'}).sort({_id:-1});
db.getCollection('case').find({applicantUuid:'4a17e96c-caf9-4d78-a853-73e190005c63'});
Комментарии:
1. Вы можете сделать это с помощью агрегации, за
$lookup
которой следует этап$match
. этап.2. Извините, но я настоящий новичок в Mongo. Мои два поиска: db.getCollection(‘person’).find({email:’perry.goodwin@yahoo.com ‘}).sort({_id:-1}); Из этого я получаю uuid и использую его во втором. db.getCollection(‘case’).find({applicantUuid:’4a17e96c-caf9-4d78-a853-73e190005c63′}); Итак, как эти два можно выполнить с помощью одного
3. Обычно это плохой подход для переноса каждой таблицы Oracle по одному в коллекцию в MongoDB. Обычно эта информация будет храниться в одной коллекции.
4. Смотрите Этот документ: диаграмма сопоставления SQL с MongoDB .
5. Нет, нет, я ничего не переношу. Я только что начал работать с Mongo в первый раз. Существует существующая база данных, которую мне нужно использовать в автоматических тестах. Пример с SQL был просто для того, чтобы показать, чего я пытаюсь достичь с помощью одного поиска. У меня нет возможности изменить порядок организации коллекций. Я могу просто использовать их такими, какие они есть.