我有类似的结构:
type Meet struct {
Title string `json:title`
Time time.Time `json:time`
Host string `json:host`
Crowd []string `json:crowd`
Geo Location `json:location`
Invoice []Bill `json:invoice`
}
type User struct {
ID bson.ObjectId `json:"id" bson:"_id,omitempty"`
Name string `json:name`
Phone string `json:phone`
Email string `json:email`
Vc string `json:vc`
Status int8 `json:status`
Avatar string `json:avatar`
FriendList []bson.ObjectId `json:friendlist`
Meetings []Meet `json:meetings`
Requests []Request `json:request`
}
,并希望更新会议的发票(例如:User.Meetings [0]。发票) 我的代码就像:
query := bson.M{
"_id": bson.ObjectIdHex(personId),
"Meetings.Title": Title,
"Meetings.Geo": Geo,
}
update := bson.M{
"$set": bson.M{
"Meetings.$.Invoice": updateInvoice,
},
}
updateErr = collection.Update(query, update)
仅找到我所得到的错误error.commenting Meetings.Geo没有帮助并导致相同的原因。未找到。 这是我的查询有问题还是什么?
答案 0 :(得分:0)
查询中的字段应该是Meetings.title和Meetings.geo。我只是使用我的一个数据库进行了测试,并且字段的大小写很重要。在您的更新中,会议应该是会议。名称取自结构项标签名而不是结构项名。例如
struct test {
ID bson. bson.ObjectId `bson:"_id"`
TestString string `bson:"ts"`
Amount int `bson:"am"`
}
query := bson.M{"ts": "test", "am": 2}
因为_id字段必须存在,所以您不能对_id有所保留。