英文:
How to modify two or more fields in document by single command
问题
我正在尝试通过Go(使用mgo连接MongoDB)的findAndModify方法向文档中的两个字段添加20个点。
像这样:
change := mgo.Change{
Update: bson.M{"$inc": bson.M{"score": 20, "hist_score": 20}}, // 在这里我需要同时将20添加到score和hist_score字段
ReturnNew: true,
}
collection.Find(bson.M{"_id": id}).Apply(change, &doc)
如何通过一个apply操作更新score和hist_score两个字段?
英文:
I am trying to add 20 points to two fields inside document with findAndModify through Go (mgo for mongo)
like
change := mgo.Change{
Update: bson.M{ "$inc": bson.M{ "score": 20 } }, // here I need to add 20 to hist_score also
ReturnNew: true,
}
collection.Find( bson.M{ "_id": id } ).Apply( change, &doc )
How to through one apply update two fields score and hist_score ?
答案1
得分: 3
官方的MongoDB文档非常好。你可以使用$inc
来更新多个字段,具体的用法如下:
{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }
另外,
若要指定嵌入文档或数组中的字段,请使用点表示法。
所以,基本上,你可以将更新规范修改为以下形式:
bson.M{ "$inc": bson.M{ "score": 20, "hist_score": 10 } }
英文:
The official mongo documentation is very good. The way you use $inc
for several fields is:
{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }
And
> To specify a field in an embedded document or in an array, use dot notation.
So, basically, change your update spec to something like:
bson.M{ "$inc": bson.M{ "score": 20, "hist_score": 10 } }
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论