gpt4 book ai didi

database - 如果过滤器不返回任何内容,如何插入文档,否则用go替换mongodb中找到的文档?

转载 作者:行者123 更新时间:2023-12-01 22:14:19 25 4
gpt4 key购买 nike

我没有像this示例中那样使用MGO包,而只是使用了here中的 Activity 存储库。

我很难阅读documentation。基本上,我有一个bson.M对象,我想替换当前对象,如果该对象不存在,则将其插入。

目前,我的代码如下:

updateFilter := bson.D{{"from_symbol", fromSymbol}, {"to_symbol", strings.ToUpper(currency["to_symbol"].(string))}}
// The above seems to be correctly finding the documents I want
// currency is my bson.M object

_, err := collection.ReplaceOne(ctx, updateFilter, currency)
// However this line will not additionally insert if the object is not found, it is replacing fine

我确定我可以手动运行另一个查询以查看文档是否存在,但这似乎是不必要的。
谢谢!

编辑:

似乎应该有一种方法可以处理 replaceOptionssee the documentation

upsert := options.ReplaceOptions{Upsert: true}
_, err := collection.ReplaceOne(ctx, updateFilter, currency, upset)

但这给了我错误:
cannot use true (type bool) as type *bool in field value

最佳答案

使用SetUpsert函数:

collection.ReplaceOne(ctx,filter,newDoc,options.Replace().SetUpsert(true))

关于database - 如果过滤器不返回任何内容,如何插入文档,否则用go替换mongodb中找到的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61378655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com