我正在尝试有条件地更新 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贡献1836条经验 获得超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实现数组(括号中已知[])
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消