Go 更新某些用户字段
对my API的请求包含ID(必填)和可选的其他字段,如名称、电子邮件和用户名Go 更新某些用户字段,go,mgo,Go,Mgo,对my API的请求包含ID(必填)和可选的其他字段,如名称、电子邮件和用户名 { "id" : "12345", "name" : "Bob", "email" : "test@example.com" } 将请求绑定到structuser后,如果我的数据库中没有ID为的用户,我会使用以下方法将其添加到数据库中: user.App_id = appId user.Created_at = (*tools.Timestamp)(&now) user.Update
{
"id" : "12345",
"name" : "Bob",
"email" : "test@example.com"
}
将请求绑定到structuser
后,如果我的数据库中没有ID为的用户,我会使用以下方法将其添加到数据库中:
user.App_id = appId
user.Created_at = (*tools.Timestamp)(&now)
user.Updated_at = (*tools.Timestamp)(&now)
_ = C.Database.C("users").Insert(&user);
但是如果有用户,我只想更新请求对象包含的字段,但我不确定如何编写查询
我的user
struct使用指针,以便检查nil
值
type user struct {
Id *string `bson:"id" json:"id"`
Name *string `bson:"name" json:"name"`
...
}
我在应用程序的其他地方使用的更新查询如下所示:
err := collection("users").Update(bson.M{"id" : "user.Id"},bson.M{"$set": bson.M{"???":"???"}})
但我不确定在这种情况下如何构造查询的后一部分
注意:我没有使用MongoDB的_id我相信您只需使用
err := collection("users").Update(bson.M{"id" : user.Id},bson.M{"$set": &user})
为您的db包包括导入如何?问这个问题很有必要。导入是什么意思?您的文件顶部可能有
import“gopkg.in/mgo.v2”
,但我怎么知道呢?也许你用的是虚构的Mongodriver
。当我猜测你在呼叫哪个库时,很难给出一个像样的答案。我希望底部的mgo标签可能会有所帮助?我没有意识到该标签是专为Go mgo司机设计的。。。我仍然认为在你的问题中加入这一点是明智的。在代码片段前面加上相关的导入非常简单。