如何在 golang 中使用 MongoDB $cond

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


这是我的代码:


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

collection.UpdateByID(id, update)

谁能帮我看看?


12345678_0001
浏览 98回答 1
1回答

米脂

如果您不想在存在时更改数据,则可以使用$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实现数组(括号中已知[])
打开App,查看更多内容
随时随地看视频慕课网APP