我的名为TradeRequest
的集合具有以下架构
const TradeRequestSchema = mongoose.Schema({
status: {
type: String,
enum: ["opened", "rejected", "accepted"],
default: "opened"
},
_requester: {
required: true,
type: mongoose.Schema.Types.ObjectId
},
_requestedBook: {
required: true,
type: mongoose.Schema.Types.ObjectId
}
});
我的数据库应该只有一个打开请求供任何人使用 所以我添加了一个像这样的唯一索引 -
TradeRequestSchema.index({_requester: 1, _requestedBook: 1, status: 1}, {unique: true});
问题是这可以防止在数据库中输入一些应该被允许的数据。
例如,它阻止我的数据库拥有以下文档,这对我的用例来说很好 -
{_id: 1, _requester: 12345, _requestedBook: 9871212, status: "opened"}
{_id: 2, _requester: 12345, _requestedBook: 9871212, status: "opened"}
但它也阻止了以下哪个错误用于我的用例。
例如,如果我的数据库已有以下文件 -
{_id: 3, _requester: 12345, _requestedBook: 9871212, status: "closed"}
{_id: 4, _requester: 12345, _requestedBook: 9871212, status: "opened"}
我现在无法将ID 4
的请求更改为closed
,这是错误的。
基本上我想要的是针对opened
但多个book
请求发出一次closed
请求。
我如何实现这一目标?
答案 0 :(得分:2)