SQL-запрос после перехода с PostgreSQL на MongoDB

#mongodb #postgresql #select #where-clause

Вопрос:

Недавно я перенес свою базу данных PostgreSQL в MongoDB. Допустим, у меня есть 2 таблицы в PostgreSQL, и я перенес их в 2 коллекции в MongoDB. В PostgreSQL:

  1. Код учетной записи таблицы
    ac_id описание идентификатор группы p_code c_code
    999.01 Мелочь 9 42000 99000
    888.09 Налог 34 70000 66000
    999.02 PC2 9 43000 99000
  2. Транзакция таблицы
    реффНум 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.