为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 golang 中使用 MongoDB $cond

如何在 golang 中使用 MongoDB $cond

Go
12345678_0001 2022-11-23 20:02:07

我正在尝试有条件地更新 MongoDB 中的一个字段,如果不存在,预期结果是新数据,但我得到的结果是data = {$cond:[exist", "data", newdata]}


这是我的代码:


update := bson.M{"$set": bson.M{"data": bson.M{"$cond": []interface{}{"exist", "data", newdata}}}}

collection.UpdateByID(id, update)

谁能帮我看看?


查看完整描述

1 回答

?
米脂

TA贡献1560条经验 获得超3个赞

如果您不想在存在时更改数据,则可以使用$ifNull聚合:


update := bson.A{bson.M{$set:bson.M{"data":bson.M{"$ifNull":bson.A{"$data",newdata}}}}}

否则,如果您想在任何情况下设置数据;现在似乎没有办法在一次更新中做到这一点。所以你必须在两个单独的更新中使用两个反向过滤器来完成它,如下所示:


//first filter

 bson.M{"data":{"$exists":true}}

//second filter

 bson.M{"data":{"$exists":false}}

请注意,用于bson.A实现数组(括号中已知[])


查看完整回答
反对 回复 2022-11-23

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信