首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在带有mgo驱动程序的Upsert上使用$setOnInsert

在带有mgo驱动程序的Upsert上使用$setOnInsert
EN

Stack Overflow用户
提问于 2019-04-12 04:02:45
回答 1查看 840关注 0票数 3

如何在带有Go MongoDB驱动程序的任何mgo变体的Upsert上使用$setOnInsert

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-12 04:02:45

给定任意类型的Foo

代码语言:javascript
复制
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"`
}

以及Upsert选择器,它确定这是Update还是Insert

代码语言:javascript
复制
selector := bson.M{
    "bar": "bar",
}

只有在插入文档时才插入创建日期的Upsert查询将如下所示(其中nowtime.Time类型的变量):

代码语言:javascript
复制
query := bson.M{
    "$setOnInsert": bson.M{
        "created": &now,
    },
    "$set": Foo{
        Bar:      "bar",
        Modified: &now,
    },
}

globalsign/mgo驱动程序中使用所有这些已定义的类型和变量,整个查询由以下代码执行:

代码语言:javascript
复制
if _, err := session.DB("test").C("test").Upsert(selector, query); err != nil {
    // Handle error
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55640319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档