Mongodb - 逻辑唯一索引

时间:2021-06-12 08:17:02

标签: mongodb

我有一个看起来像这样的交易集合

{
    type: Joi.string().valid(Object.values(TRANSACTION_TYPE)).required(),
    user_id: Joi.objectId(),
    amount: Joi.number().gt(0).required(),
    status: Joi.string().valid(Object.values(STATUS)).required(),
}

我想限制集合对于每个用户只能同时有 1 个相同类型的交易处于打开状态,因此如果用户尝试创建另一个具有相同交易类型的文档,他将得到一个错误

要避免的情况:

{
    type: "withdrawal",
    user_id: 123456,
    amount: 100,
    status: "open",
}
{
    type: "withdrawal",
    user_id: 123456,
    amount: 1,
    status: "open",
}

好案例

{
    type: "withdrawal",
    user_id: 123456,
    amount: 100,
    status: "open",
}
{
    type: "withdrawal",
    user_id: 123456,
    amount: 1,
    status: "close",
}
{
    type: "withdrawal",
    user_id: 123456,
    amount: 1,
    status: "close",
}

问题是唯一索引在这里无法帮助我,因为他可以有多个关闭状态但只有一个打开状态

0 个答案:

没有答案