Невозможно добавить объект в массив в mongoDB - PullRequest
0 голосов
/ 10 октября 2019

У меня есть эта модель. И я хочу обновить поданный рейтинг.

{ 
   "_id":"5d9f771a005ad60cfb76bc87",
  ...
   "riders":[ 
      { 
         "_id":"5d9ce9fd270eae22adb95d70",
         "profileimage":"",
         "rating":4 <------- Need to update this.
      }
   ]
}

Если я это сделаю

update := bson.M{"$set": bson.M{"riders.$.rating": rating}}

Я получаю эту ошибку

multiple write errors: [{write errors: [{The positional operator did not find the match needed from the query.}]}, {<nil>}]

Если я это сделаюон отлично работает.

update := bson.M{"$set": bson.M{"riders.0.rating": rating}}

Но в настоящее время у него есть только один элемент, поэтому я могу поставить 0, и он работает, но как это сделать без index?

1 Ответ

0 голосов
/ 10 октября 2019

Позиционный оператор $ может использоваться для выбора первого соответствующего элемента массива в запросе. Ваш запрос должен включать элемент массива:

query:=bson.M{"_id": <the document id>, "riders._id": <id you are searching for}
update:=bson.M{"$set": bson.M{"riders.$.rating": rating}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...