我尝试检查MongoDB集合中是否存在一个键。基本上,我需要将一个字符串数组Map到一个特定的键。如果键存在,我希望通过添加新值来更新列表,否则创建一个具有初始值的新键(如果添加新键,则最初只添加1个值)。
我在网上找到了一些例子,虽然我还没有能够让它在本地工作。下面是我的代码(我使用的是官方的Go MongoDB驱动程序):
key:= "some_key"
database := client.Database("dbName")
keysCollection := database.Collection("keys")
keysCollection.Find(nil, {key:{$exists:true}});
关于此组件{key: {$exists:true}}
,我遇到了两个问题
invalid character U+0024 '$'
:当试图检查key
是否存在时,在{$exists:true}
,尽管这似乎是MongoDB文档支持的检查键本身是否存在,而不检查Map到它的确切值syntax error: unexpected {, expecting expression
:在{key: {$exists:true}}
的开头,看起来我不能传递结构体?
这是我第一次使用MongoDB,我对GoLang的经验很少,并且被这个看起来很小的问题卡住了。
我这样做对吗?如果是这样,我如何才能越过这些问题?
3条答案
按热度按时间rt4zxlrg1#
为了检查集合中是否存在键,以下是分别在
mongo
shell和 golang 中的查询。假设示例文档的集合为:参见$exists的用法。
我试图检查MongoDB集合中是否存在一个键。我需要将一个字符串数组Map到一个特定的键。如果该键存在,我希望通过添加新值来更新列表,否则创建一个具有初始值的新键(如果添加新键,则最初只会添加1个值)。
要根据条件更新字段,您需要使用Update With Aggregation Pipeline。以下shell和 golang 查询将使用条件更新所有文档-如果数组字段存在,则添加来自
newValue
的值 * 或 * 如果字段不存在,则使用来自newValue
的值创建新字段arr
。gwo2fgha2#
试试这个
46scxncf3#
使用下面的查询,我们将得到所有结果。
请检查文档以获取更多信息。