Arrays MongoDb中带有嵌套位置运算符的$addToSet

Arrays MongoDb中带有嵌套位置运算符的$addToSet,arrays,mongodb,positional-operator,Arrays,Mongodb,Positional Operator,我想向另一个数组中的数组添加一个值。我的文件如下: {categories:[{categoryName:"a category", items:[{itemName:"an item", arrayOfValues:[1]}]}]} 我想使用$addToSet来设置数组值。为此,我正在使用查询进行更新 table.update({"categories.items.itemName" : "anItem"}, {$addToSet: "categories.$.items.$.arrayOf

我想向另一个数组中的数组添加一个值。我的文件如下:

{categories:[{categoryName:"a category", items:[{itemName:"an item", arrayOfValues:[1]}]}]}
我想使用$addToSet来设置数组值。为此,我正在使用查询进行更新

table.update({"categories.items.itemName" : "anItem"}, {$addToSet: "categories.$.items.$.arrayOfValues":"10"})
但我得到一个错误:无法使用字符串字段名[$]追加到数组

我做错了什么?是否可以使用嵌套数组进行更新


感谢

目前,阵列内部的阵列被认为是糟糕的mongodb设计(主要是因为您无法使用
$addToSet
和friends有效地操纵它们)。你更进一步,在数组中创建了数组


我知道MongoDB的无模式特性会让人觉得可以将任何结构的文档放入其中,然后再处理它们。不幸的是,这不是现实。你必须知道你在做什么,有什么特点和局限性。在这种情况下,您现在认为阵列中的阵列是糟糕的mongodb设计(主要是因为您无法使用
$addToSet
和friends有效地操作它们)。你更进一步,在数组中创建了数组


我知道MongoDB的无模式特性会让人觉得可以将任何结构的文档放入其中,然后再处理它们。不幸的是,这不是现实。你必须知道你在做什么,有什么特点和局限性。在这种情况下,您。

@RemonvanVliet:您没有注意到我回答中的这个链接吗?:)@塞吉奥图兰采夫,我注意到你说过“有效地操纵它们”。我遇到了,它似乎也适用于
$addToSet
。是不是效率不高?你对它的效率有什么想法吗?@RemonvanVliet:你没有注意到我回答中的这个链接吗?:)@塞吉奥图兰采夫,我注意到你说过“有效地操纵它们”。我遇到了,它似乎也适用于
$addToSet
。是不是效率不高?你有没有想过它的效率有多低?