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 }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥15 DruidDataSource一直closing
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签)
- ¥50 sft下载大文阻塞卡死
- ¥15 机器人轨迹规划相关问题