#mongodb #mongoose
Вопрос:
У меня есть две схемы для приложения для аукциона, которое я создаю. Один для самого аукциона, и он включает в себя массив вложенных документов с предложениями.
Вот как выглядит моя схема аукциона:
const auctionSchema = mongoose.Schema( { isActive: { type: Boolean, required: true }, duration: { type: Date, required: true }, description: { type: String, default: '' }, bids: [Bid.schema] }, { timestamps: true, } );
И это моя схема ставок:
const bidSchema = mongoose.Schema( { bidder: { type: String, required: true, trim: true }, amount: { type: Number, required: true, index: { unique: true, partialFilterExpression: { amount: { $type: "number" } } } } }, { timestamps: true, } );
Моя цель состоит в том, чтобы определенная сумма ставки могла существовать в этом массиве только один раз. Но значение участника торгов может быть дубликатом.
Вот как я пишу в аукционном документе:
var query = { 'tokenId': tokenId }, update = { $push: { bids: bidBody } }; Auction.findOneAndUpdate(query, update, function (err, data) { if (err) { console.log(err); } });
Но, к сожалению, я могу создавать дубликаты без проблем.
Комментарии:
1. таким образом, вопрос в том, чтобы разрешить дубликаты только в том случае, если дубликат имеет максимальное значение из существующих? например, если
1 3 5
мы не можем добавить 1, но можем добавить 5? или мы не можем добавить ни одного из 1,3,5 ? ответ ниже,если вы хотите, чтобы все участники торгов были уникальными и никогда не допускали дублирования.2. Таким образом, в принципе, если есть заявка с участником торгов «боб» и сумма равна 10, не может быть другого участника торгов «Сьюзен» с суммой 10. Это должно быть запрещено. Но «боб» или «Сьюзен» могут сделать ставку в другой раз с более высокой ставкой, чем 10.