【发布时间】:2020-05-06 21:38:20
【问题描述】:
td;rd
我想获取所有交易并忽略pendingTransactionId字段等于另一个文档的transactionId的交易。
我有一个名为 Transactions 的集合,我存储代表诸如银行交易之类的交易的文档。这些事务有一个标志,告诉您它是否处于挂起状态,以及一个存储挂起事务 ID 的字段。这是一个例子:
// 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 等于 transactionId 则应该忽略事务另一个文件。
更新
添加记录与预期的示例
// 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 的记录被忽略,因为已经有一个事务已处理(待处理=false)。 transactionId=333 不会被忽略,因为它不是待处理的,即使我们没有待处理事务的记录
【问题讨论】:
-
您能否发布更多示例。需要看看我们是否可以通过$graphLookup 得到想要的结果
-
@Valijon 添加了一个示例
标签: mongodb mongoose mongodb-query