Mongoose Nodejs - обновить массив объекта со значением приращения

Я очень новичок в nodejs. В настоящее время я увеличиваю значение в объекте массива. У меня ошибка после написания этого кода. Я хочу увеличить значение linkview. я нашел нечто подобное с моей проблемой Mongoose - Увеличьте значение внутри массив объектов, но я все еще не могу его решить. Пожалуйста помоги

Итак, это User схема

{        
  "_id": "67324b2cc6817758118e9557d8",
  "name": "James",
  "__v": 0,
  "affiliatelink": [
    {
      "storeId": 60014d6e7286763490c3543,
      "storeName": white choc,
      "linkview": 1
    }
  ]
}`


а это мой код и ошибка MongoError: The positional operator did not find the match needed from the query


Admin.findByIdAndUpdate({ _id: adminId }, {$inc: {"affiliatelink.$.linkview": 1}}, function(err, result) {
        console.log("ni error "+err)
        //if (err) return next(err)
    });

person husna yaman    schedule 12.02.2021    source источник
comment
если вы хотите увеличить число во всех linkview объектах, попробуйте { "affiliatelink.$[].linkview": 1 }   -  person turivishal    schedule 12.02.2021
comment
Как сказал @turivishal, использование всего позиционного оператора $[] должно работать. Ознакомьтесь с документацией а также пример здесь   -  person J.F.    schedule 12.02.2021
comment
убедитесь, что вы преобразовали adminId в идентификатор объекта, если вы используете мангуст, попробуйте mongoose.Types.ObjectId(adminId)   -  person turivishal    schedule 12.02.2021
comment
большое спасибо @turivishal. Теперь работает :)   -  person husna yaman    schedule 12.02.2021


Ответы (1)


Вам нужно указать, какой объект обновлять в массиве объектов affiliateLink

Вы можете использовать приведенный ниже запрос и попробовать:

Admin.findOneAndUpdate(
   {
     _id: adminId, 
     "affiliateLink.storeId": "60014d6e7286763490c3543"
   },
   {
     $inc: {
          "affiliateLink.$.linkView": 1
     }
   }, 
   function(err, result) {
        console.log("ni error "+err)
        //if (err) return next(err)
});

person Roshan Raj    schedule 12.02.2021