我有一个看起来像这样的交易集合
{
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",
}
问题是唯一索引在这里无法帮助我,因为他可以有多个关闭状态但只有一个打开状态