如何使用Go更新Mongodb中的数组字段

我想将 stu1 </ code>更改为 stu3 </ code> </ p >

  import(
“ gopkg.in/mgo.v2"
” gopkg.in/mgo.v2/bson"
)
type学生结构{
名称字符串bson:“ name”
年龄字符串bson:“ age”
}
type类结构{
ID字符串bson:“ _ id”
Student []学生bson:“ student”\ n}

col:= mongosession.DB(“ test”)。C(“ class”)

stu1:= Student {“ jack”,“ 18”}
stu2:= Student {“ rose”,“ 16“}
class:=班级{Id:” 123“,学生:[]学生{stu1,stu2}}
col.Insert(class)

stu3:=学生{” lisi“,” 14“} \ n </ code> </ pre>

如何进行更新? 是否类似于以下</ p>

  col.Update(bson.M {“ _ id”:“ 123”},
bson.M {“ $ set”:bson.M {“学生”:??????}})
</ code> </ pre>

任何帮助将不胜感激!</ p>
</ div>

展开原文

原文

I want to change stu1 to stu3

import (
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)
type Student struct {
    Name string `bson:"name"`
    Age  string `bson:"age"`
}
type Class struct {
    Id      string    `bson:"_id"`
    Student []Student `bson:"student"`
}

col := mongosession.DB("test").C("class")

stu1 := Student{"jack", "18"}
stu2 := Student{"rose", "16"}
class := Class{Id: "123", Student: []Student{stu1, stu2}}
col.Insert(class)

stu3 := Student{"lisi", "14"}

How do I do the update? Is it like the following

col.Update(bson.M{"_id": "123"},
            bson.M{"$set": bson.M{"student": ??????}})

Any help will be appreciated!

1个回答

You can use the $set operator and the dot notation :

err := col.Update(
  bson.M{"_id": "123"},
  bson.M{
    "$set": bson.M{
      "student.0": &stu3
    }
})
duanguochi6194
duanguochi6194 错误:= col.Update(bson.M {“ _ id”:“ 123”,“ student.name”:“ jack”},bson.M {“ $ set”:bson.M {“ student。$”:&stu3 }})可以。
大约 3 年之前 回复
douxian5963
douxian5963 谢谢! 有用。 如果我不知道stu1是数组中的0字段怎么办,我只知道名称是“ jack”,那么如何编写更新代码?
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问