如何在 golang 中使用 MongoDB $cond

how to use MongoDB $cond in golang

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

这是我的代码:

update := bson.M{"$set": bson.M{"data": bson.M{"$cond": []interface{}{"exist", "data", newdata}}}}
collection.UpdateByID(id, update)

谁能帮我看看?

如果您不想更改存在的数据,那么您可以使用 $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来实现数组(用括号知道[]