gpt4 book ai didi

arrays - Mongodb 3.6.0-rc3 数组过滤器不起作用?

转载 作者:行者123 更新时间:2023-12-03 00:37:45 24 4
gpt4 key购买 nike

我正在尝试在 mongodb 3.6.0-rc3 中使用数组过滤器,就像 doc example 中一样但没有任何行受到影响,也没有错误。

示例已简化。我知道这可以使用 $ 作为位置运算符来完成,但我计划将此功能用于两级嵌套数组。

db.getCollection('books').update({},
{
$set: { "authors.$[element].firstName": "Joe" }
},
{
arrayFilters: [ { element: { "_id": ObjectId("some_id") } } ],
multi: true
})

有人试过这个吗?

最佳答案

您是在 robomongo 中输入此内容吗?看起来是这样!如果是这样的话就不行了。阅读我关于 Updating a Nested Array with MongoDB 的注释我说这在“旧 shell”或基于它的任何东西( robomongo 是基于 shell 的构建)中不起作用,因为 shell 帮助器方法当前实现的方式:

NOTE Somewhat ironically, since this is specified in the "options" argument for .update() and like methods, the syntax is generally compatible with all recent release driver versions.

However this is not true of the mongo shell, since the way the method is implemented there ( "ironically for backward compatibility" ) the arrayFilters argument is not recognized and removed by an internal method that parses the options in order to deliver "backward compatibility" with prior MongoDB server versions and a "legacy" .update() API call syntax.

So if you want to use the command in the mongo shell or other "shell based" products ( notably Robo 3T ) you need a latest version from either the development branch or production release as of 3.6 or greater.

因此,如果您想“使用”候选版本,请使用该版本捆绑的 mongo shell,或者直接通过任何标准驱动程序运行您的代码。

关于arrays - Mongodb 3.6.0-rc3 数组过滤器不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47225822/

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