Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将数据添加到MongoDB中数组内的数组_Arrays_Mongodb - Fatal编程技术网

Arrays 将数据添加到MongoDB中数组内的数组

Arrays 将数据添加到MongoDB中数组内的数组,arrays,mongodb,Arrays,Mongodb,这是我的mongodb文档: { "_id" : "", "lists" : [ { "name" : "list 1", "items" : [] }, { "name" : "list 2", "items" : [] } ] } 如何在“项目”中添加对象 这是我到目前为止的代码,但它不起作用: xxx.update(_id, {$push: { "lists.$.items": item}

这是我的mongodb文档:

{
"_id" : "",
"lists" : [ 
    {
        "name" : "list 1",
        "items" : []
    }, 
    {
        "name" : "list 2",
        "items" : []
    }
]
}
如何在“项目”中添加对象

这是我到目前为止的代码,但它不起作用:

xxx.update(_id, {$push: { "lists.$.items": item}});
请注意,我可以访问索引(称为“index”的变量),因此可以在索引0、1、2…等处插入项

我以前试过,但不起作用:

xxx.update({_id, "lists": index}, {$push: { "lists.$.items": item}});
我也看了其他类似的问题,什么也没找到。它们中的大多数在数组中都有某种id字段,但我没有。

那怎么办

xxx.update({_id}, {$push: { "lists.index.items": item}});
当然这会失败,我的意思是用真实的索引值替换索引

xxx.update({_id}, {$push: { "lists.2.items": item}});
您可以根据索引操作更新json,如下所示

var update = '{$push: { "lists.'+index+'.items": '+item+'}}';
var updateObj = JSON.parse(update);
xxx.update({_id}, updateObj); 

不确定它是否能正常工作,或者需要进一步调整,但你明白了。

对不起,我不能直接输入数字,我需要使用变量,以便其可重用。有办法吗?我知道你不能硬编码,我的意思是你根据变量准备一个字符串,通过json.parse将其解析为json,然后使用该对象。有办法用javascript实现吗?我也做了一些搜索,我开始认为这是不可能的,因为mongoDBs当前的限制给出了答案,是的,将对象数组放在数组中是不好的设计,查询和索引将不会有效,特别是如果处理内部嵌套数组。