#mongodb #postgresql #select #where-clause
Вопрос:
Недавно я перенес свою базу данных PostgreSQL в MongoDB. Допустим, у меня есть 2 таблицы в PostgreSQL, и я перенес их в 2 коллекции в MongoDB. В PostgreSQL:
- Код учетной записи таблицы
ac_id описание идентификатор группы p_code c_code 999.01 Мелочь 9 42000 99000 888.09 Налог 34 70000 66000 999.02 PC2 9 43000 99000 - Транзакция таблицы
реффНум ac_id дБ cr описание дата и время ID ревизованный GL/0003845/В/11/21/ХХХ 999.01 950000 0 Перевод от Клиента 2021-03-17 09:58:41.304302 2 0 GL/0005584/В/11/21/ХХХ 999.02 10000 0 Перевод от Клиента 2021-03-18 09:58:41.304302 2 0 SL/00077898/В/11/21/ХХХ 888.09 997500 0 Налог 2021-03-18 09:58:41.304302 2 0 GL/0005485/В/11/21/ХХХ 999.01 0 150000 Перевод Клиенту 2021-03-25 09:58:41.304302 3 0
И у меня есть такой SQL-запрос:
SELECT CASE WHEN (SUM (A .db) - SUM (A .cr)) is NULL THEN '0' ELSE (SUM (A .db) - SUM (A .cr)) END from transaction a, accountCode b
where a.ac_id = b.ac_id and a.id<>0 AND (a.audited='0') AND to_char(a.dateTime,'YYYY-MM') = '2021-03' AND b.groupid="9"
И это должно дать результат: 810000
Я перенес базу данных в 2 коллекции в MongoDB, аналогично 2 таблицам в PostgreSQL. Но теперь я не понимаю, как сделать запрос, чтобы получить тот же результат в MongoDB? Или мне следует изменить структуру с 2 таблиц на 1 отдельную коллекцию в MongoDB? Есть какие-нибудь мысли? ТИА.
Ответ №1:
Вы можете объединить две коллекции с помощью $lookup(Агрегация)
{$lookup:
{
from: <collection to join>,
localField: <field from the input documents>,
foreignField: <field from the documents of the "from" collection>,
as: <output array field>
}}
Но рекомендуется создавать обе таблицы как единую коллекцию, для которой предназначен Mongodb.