Я пишу запрос mongoDb с upsert true, но получаю ошибку, что 'Обновление пути \' marketRatio \ 'приведет к конфликту в \' marketRatio \ ''
Мой код:
router.post('/testing', async (req, res)=>{
try {
let providerId = req.body.providerId;
let arrayProvider = {
providerId : providerId,
counter: 5
};
let doc = await gameRatio.findOneAndUpdate(
{ userId : req.body.userId },
{
userId : req.body.userId,
username : "mohit8982",
marketRatio : arrayProvider,
$inc: {
totalBids : 5,
totalPending : 5,
totalBidsAmount : 55,
"marketRatio.$[id].counter": 2
}
},
{ arrayFilters :
[
{"id.providerId" : providerId }
],
multi : true ,
new: true,
upsert: true
});
console.log(doc);
res.json(doc);
} catch (error)
{
console.log(error);
let err = JSON.parse(error);
res.json(err);
}});
И схема:
const RatioAnalysys = new mongoose.Schema({
userId: {
type: mongoose.Schema.Types.ObjectId,
required: false
},
username: {
type: String,
required: false
},
totalBids:{
type: Number,
required: false
},
totalWin:{
type: Number,
required: false
},
totalLoss:{
type: Number,
required: false
},
totalPending:{
type: Number,
required: false
},
totalBidsAmount:{
type: Number,
required: false,
},
totalWinAmount:{
type: Number,
required: false
},
marketRatio : {
type: Array,
required: false
}}
, если я хочу вставить данные в базу данных, то результат, который я хочу, будет таким, когда этот запрос будет выполнен, а затем будет рыночное отношение массива, в котором у меня будет 2 кол. , ProviderId и Counter, я хочу увеличить счетчик, если providerId совпадает, иначе я хочу добавить pu sh providerId со счетчиком в массив marketRatio