我有这个模特。我想更新提交的评级。

{
   "_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怎么办呢?

最佳答案

位置运算符$可用于选择查询中的第一个匹配数组元素。您的查询必须包含array元素:

query:=bson.M{"_id": <the document id>, "riders._id": <id you are searching for}
update:=bson.M{"$set": bson.M{"riders.$.rating": rating}}

关于mongodb - 无法在mongoDB中的数组内添加对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58329884/

10-13 04:21