td; rd
Я хочу получить все транзакции и игнорировать транзакции, в которых поле pendingTransactionId равноactionId другого документа .
У меня есть коллекция под названием Транзакции, и я храню документы, которые представляют транзакции, такие как транзакции Банка. Эти транзакции имеют флаг, который сообщает вам, ожидает ли он, и поле, в котором хранится идентификатор ожидающей транзакции. Вот пример:
// Pending Transaction
{
transactionId: 1,
pending: true,
pendingTransactionId: null,
amount: 5
}
// Processed transaction
{
transactionId: 2,
pending: false,
pendingTransactionId: 1,
amount: 7
}
Это «одинаковые» транзакции, но у меня есть 2 записи о них, потому что обработанная может быть обработана в другое время (например, через 1 или 2 дня после выполнения отложенной транзакции). ), и есть поля, которые могут измениться, например amount
(например, это может быть подсказка, которую я оставил в ресторане).
Запрос, который я пытаюсь создать, и мне трудно это та, которая выдаст мне все транзакции, но она будет игнорировать «дубликаты»: должна игнорировать транзакцию, если pendingTransactionId равен транзакции другого документа.
ОБНОВЛЕНИЕ
Добавление примера записей против ожидаемых
// records
{
transactionId: 123,
pending: true,
pendingTransactionId: null,
amount: 5
}
{
transactionId: 321,
pending: false,
pendingTransactionId: 123,
amount: 7
}
{
transactionId: 333,
pending: false,
pendingTransactionId: 888,
amount: 22
}
{
transactionId: 444,
pending: true,
pendingTransactionId: null,
amount: 50
}
{
transactionId: 555,
pending: false,
pendingTransactionId: null,
amount: 60
}
// expected
{
transactionId: 321,
pending: false,
pendingTransactionId: 123,
amount: 7
}
{
transactionId: 333,
pending: false,
pendingTransactionId: 888,
amount: 22
}
{
transactionId: 444,
pending: true,
pendingTransactionId: null,
amount: 50
}
{
transactionId: 555,
pending: false,
pendingTransactionId: null,
amount: 60
}
Запись с transactionId=123
игнорируется, поскольку уже есть обработанная транзакция (pending = false). transactionId=333
не игнорируется, поскольку не ожидает обработки, даже если у нас нет записи об ожидающей транзакции