mongodb - 在 MongoDB 中使用 $function new 运算符进行 updateMany 失败
问题描述
我有一个数组树,我想用这种语法更新我的集合中的那个数组
db.documents.updateMany(
{
companyId: ObjectId("5f29074048538b6403bc71ab",
tree: {
$in: [ObjectId("5f539bf696fa1748fa417b07")],
},
},
[{
$set: {
tree: {
$function: {
body:
"function(t) { t.push(ObjectId('5f5494a1d708bda4988d75d4')); return t.filter(v => [ObjectId('5f539bf696fa1748fa417b07')].includes(v))}}",
args: ["$tree"],
lang: "js",
},
},
},
}]
);
为什么我用字符串编写正文函数?因为在 Golang 中我不能使用 bson 的代码,所以我必须使用函数字符串,上面的语法是我在命令行上运行 mongo cli 先尝试然后实现到我的 Go 应用程序
我得到的错误是
Unrecognized expression '$function'
有人有同样的问题吗?还是我使用$function
运算符做错了??
解决方案
我也有这个问题。在我的场景中,问题是 MongoDB 实例的版本。检查 $function https://docs.mongodb.com/manual/reference/operator/aggregation/function/的文档,它说这些函数是在 4.4 版中引入的 如果您对正在运行的版本有任何疑问,只需执行“db.version()”。我的是 4.2.17
推荐阅读
- android - 更新 react-native 后无法运行 ios
- java - 如何在 android studio 中创建音频可视化工具?
- domain-driven-design - 消息代理退出时如何处理发布事件?
- zip - 如何让PC在Chrome中一键解压下载的文件?Mac 能做到这一点,为什么 PC 不能呢?
- javascript - 如何在它之外的函数中使用在另一个函数中声明的变量?
- c# - 仅将类的方法公开给 Manager 类?
- android - BindingAdapter 中的 LiveData 观察者
- vb.net - VB.NET DLL 不触发 VB6 中的方法
- php - Wordpress - 通过 Ajax 保存到服务器
- bash - 如何将文本文件中的随机行分配给变量?