How do you use $setOnInsert
on an Upsert
with any of the mgo
variants of the Go MongoDB drivers?
在带有mgo驱动程序的Upsert上使用$ setOnInsert
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 普通网友 2019-04-11 20:02关注
Given the arbitrary type
Foo
:type Foo struct { ID bson.ObjectId `json:"_id,omitempty" bson:"_id,omitempty"` Bar string `json:"bar" bson:"bar"` Created *time.Time `json:"created,omitempty" bson:"created,omitempty"` Modified *time.Time `json:"modified,omitempty" bson:"modified,omitempty"` }
And the
Upsert
selector, which determines whether or not this will be anUpdate
or anInsert
:selector := bson.M{ "bar": "bar", }
The
Upsert
query to insert a created date only if the document is being inserted will look like this (wherenow
is a variable of typetime.Time
):query := bson.M{ "$setOnInsert": bson.M{ "created": &now, }, "$set": Foo{ Bar: "bar", Modified: &now, }, }
Using all of these defined types and variables with the
globalsign/mgo
driver, this entire query is executed by the following code:if _, err := session.DB("test").C("test").Upsert(selector, query); err != nil { // Handle error }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
- ¥15 求daily translation(DT)偏差订正方法的代码
- ¥15 js调用html页面需要隐藏某个按钮