модель следующим образом:
let gardenmodal = new mongoose.Schema({
display:{type:Boolean, default:true},
itemList:[{type:Number,count:Number}]
});
let GardenModel = db.model('GardenModel', gardenmodal);
документ следующим образом:
{ display: true,
itemList:
[ { type: 1, count: 200 },
{ type: 2, count: 81 },
{ type: 3, count: 78 } ],
_id: 5b2e52144c73cb22fc77b92b,
__v: 0 }
Я хочу обновить элемент с типом = 1, чтобы уменьшить его число 2, и элемент с типом= 2, чтобы уменьшить его num 3, в то же время новый элемент с его типом = 10, count = 100, нужно вставить в itemList, вот моя попытка:
let res = await GardenModel.findOneAndUpdate({},{
$inc:{"itemList.$[elem1].count":-3, "itemList.$[elem2].count" : -2},
$push:{"itemList":{ type: 10, count: 200 }}
},{
arrayFilters:[{"elem1.type":2},{"elem2.type":3}],
new:true
});
, но он работаетошибка:
(node:6596) UnhandledPromiseRejectionWarning: MongoError: Updating the path 'itemList.$[elem1].count' would create a conflict at 'itemList'
at H:\node\wcgroup\node_modules\mongodb-core\lib\connection\pool.js:593:63
at authenticateStragglers (H:\node\wcgroup\node_modules\mongodb-core\lib\connection\pool.js:516:16)
at Connection.messageHandler (H:\node\wcgroup\node_modules\mongodb-core\lib\connection\pool.js:552:5)
at emitMessageHandler (H:\node\wcgroup\node_modules\mongodb-core\lib\connection\connection.js:309:10)
at Socket.<anonymous> (H:\node\wcgroup\node_modules\mongodb-core\lib\connection\connection.js:452:17)
at Socket.emit (events.js:182:13)
at addChunk (_stream_readable.js:279:12)
at readableAddChunk (_stream_readable.js:264:11)
at Socket.Readable.push (_stream_readable.js:219:10)
at TCP.onread (net.js:636:20)
что мне делать?