MongoDB 更新操作无法使用 golang mongo-驱动程序
MongoDB update operation not working using golang mongo-driver
这是参考
我需要删除空的子数组。我需要在 go lang
中编写这个查询
db.getCollection('workflows').update({<find condition>}, {$pull: {"workflows":[] } } )
所以我写了下面的代码
nquery := bson.D {
{"level", "application"},
{"workflowName", workflowName},
{"applicationName", applicationName},
}
nupdate := bson.M{"$pull": bson.M{"workflows":"[]"}}
UpdateOne(getContext(), nquery, nupdate)
UpdateOne 的结果显示我的查询已匹配但未修改任何内容。所以我猜 nupdate 有一些问题。我做错了什么?
UpdateOne 函数是 mongo-go lang 驱动程序的一部分
方括号“[]”不应该在引号中,因为现在它们被解释为字符串...,它们需要像方括号 [] 一样添加并且在 golang 中需要:&[]int{}由 mongo goland 驱动程序转换为空数组...
"[]"
不是查询中的空数组,它是一个 字符串 具有左右方括号。
MongoDB 空数组可以用这种类型的空 slice in Go, e.g. with a value of type []interface{}
, so a composite literal“建模”为 []interface{}{}
。
所以使用这个:
nupdate := bson.M{"$pull": bson.M{"workflows": []interface{}{}}}
这是参考
我需要删除空的子数组。我需要在 go lang
中编写这个查询db.getCollection('workflows').update({<find condition>}, {$pull: {"workflows":[] } } )
所以我写了下面的代码
nquery := bson.D {
{"level", "application"},
{"workflowName", workflowName},
{"applicationName", applicationName},
}
nupdate := bson.M{"$pull": bson.M{"workflows":"[]"}}
UpdateOne(getContext(), nquery, nupdate)
UpdateOne 的结果显示我的查询已匹配但未修改任何内容。所以我猜 nupdate 有一些问题。我做错了什么?
UpdateOne 函数是 mongo-go lang 驱动程序的一部分
方括号“[]”不应该在引号中,因为现在它们被解释为字符串...,它们需要像方括号 [] 一样添加并且在 golang 中需要:&[]int{}由 mongo goland 驱动程序转换为空数组...
"[]"
不是查询中的空数组,它是一个 字符串 具有左右方括号。
MongoDB 空数组可以用这种类型的空 slice in Go, e.g. with a value of type []interface{}
, so a composite literal“建模”为 []interface{}{}
。
所以使用这个:
nupdate := bson.M{"$pull": bson.M{"workflows": []interface{}{}}}