mongodb - 如何向 bson.D 对象添加值

标签 mongodb go bson

我正在使用 golang 和 MongoDB 驱动程序,我想根据从外部获得的数据修补我的一个对象:

我有一个结构:

type Pivot struct {
    Email        string             `json:"email"`
    Base         string             `json:"base"`
}

和补丁(带有 MongoDB 更新)

setMap := bson.D{
        {"$set", setElements},
    }

res, err := collection.UpdateMany(
    ctx,
    filter,
    setMap,
)

我想让 setObject 有点动态:

if len(pivot.Base) > 0 {
  setElements.append("base", pivot.Base) //this doesn't work...
}
if len(pivot.Email) > 0 {
  setElements.append("email", pivot.Email)
}

我看到 setObject can be built like

{"$set", bson.D{
    {"processed", pivot.Processed},
}

但是我怎样才能使它动态呢?

最佳答案

追加 DocElem (mgo) 或 E (go.mongodb.org) 到 slice ,具体取决于您使用的客户端。

var setElements bson.D
if len(pivot.Base) > 0 {
  setElements = append(setElements, bson.E{"base", pivot.Base})
}
if len(pivot.Email) > 0 {
    setElements = append(setElements, bson.E{"email", pivot.Email})
}

setMap := bson.D{
    {"$set", setElements},
}

用 bson.DocElem 替换 mgo 的 bson.E。

关于mongodb - 如何向 bson.D 对象添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55306617/

相关文章:

linux - 蒙神 : symbol lookup error: mongod: undefined symbol: _ZN4YAML6detail9node_data12empty_scalarB5cxx11

python - 在django中迁移模型时如何解决SQLdecode错误?

go - 无法使用 dart 和 angular 2 客户端运行 Golang 后端

json - 编码(marshal) map 到 JSON

javascript - 是否有比 JSON/BSON 更精简的 Javascript 对象表示法格式?

javascript - Mongoose "find"返回一个空数组

node.js - Mongoose:使用 npm/node_modules 模块提供的模型或模式

go - 无法识别同步中的错误。一旦使用

MongoDB 将数组迁移到字典

c - Libbson 和 MongoDB-C 驱动编译