Что эквивалентно подзапросу SQL в MongoDB?

#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 был просто для того, чтобы показать, чего я пытаюсь достичь с помощью одного поиска. У меня нет возможности изменить порядок организации коллекций. Я могу просто использовать их такими, какие они есть.