私は私のデータベースはすべての人の著書のためだけ1オープン要求を持っている必要があり、次のスキーマ特定の値を持つマングースユニークインデックスを作成するにはどうすればよいですか?
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
}
});
とTradeRequest
という名前のコレクションを持っています。
だから私はそうのような一意のインデックスを追加 -
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"}
私は今間違っているclosed
へのid 4
で要求を変更することはできませんが。
基本的には、book
の1つのopened
リクエストがありますが、複数のclosed
リクエストがあります。
どうすればよいですか?
感謝を願っています。それが私が探していたものです。 –