Mon go Db Query With Upsert True - PullRequest
       8

Mon go Db Query With Upsert True

0 голосов
/ 25 января 2020

Я пишу запрос 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...