Сравните две коллекции и получите пропущенные документы с идентификаторами пользователя - PullRequest
1 голос
/ 19 сентября 2019

У меня есть две коллекции Payment & Wallet.Всякий раз, когда пользователь совершает какой-либо платеж, эта информация о платеже вставляется в коллекцию платежей, а также добавляется последующий сбор кошелька.Коллекция кошелька имеет в качестве внешнего ключа идентификатор платежа и идентификатор пользователя.

Для 100 транзакций не происходит ни одного, ни одного ввода кошелька.

Я пытаюсь получить пропущенные вставки кошелька, сравнивая две коллекции.Я начал со следующего запроса и изменил его несколькими способами, чтобы получить желаемый результат.

const missedPayment = await Payment
        .aggregate([
          {
            $lookup: {
              from: "Wallet",
              localField: "_id",
              foreignField: "paymentId",
              as: "missedWallet"
            }
          }
        ])
        .sort({ createdAt: -1 })

Все, что мне нужно, это вставить документы в коллекцию платежей, но не в коллекцию кошельков.Заранее спасибо

1 Ответ

0 голосов
/ 20 сентября 2019

Попробуйте этот запрос, чтобы найти документы, вставленные в Коллекцию платежей, но не в Коллекцию кошельков:

db.Payment.aggregate([
{"$match":{"_id":{"$exists":1}}},
{"$lookup":{"from": "Wallet",
            "localField":"_id",
            "foreignField":"paymentId",
            "as":"missedWallet"
}},
{"$match":{"missedWallet.0":{"$exists":0}}}
],{"allowDiskUse":true});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...