Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
Javascript 如何向Node.js中的嵌套mongodb集合添加和删除数据?_Javascript_Mongodb_Node.js - Fatal编程技术网

Javascript 如何向Node.js中的嵌套mongodb集合添加和删除数据?

Javascript 如何向Node.js中的嵌套mongodb集合添加和删除数据?,javascript,mongodb,node.js,Javascript,Mongodb,Node.js,我想在以下mongodb集合中添加和删除开发人员。可以有许多项目,每个项目可以有许多用户故事,每个用户故事可以有多个开发人员参与其中 问题: 我可以使用哪个mongodb查询向stories集合添加新的开发人员,以及我可以使用哪个mongodb查询从stories集合中删除开发人员 项目的JSON: 你的设计不一致。有些集合是数组,有些是哈希 我倾向于更多地使用散列,但我不会对项目使用普通的“数值”索引。例如: "stories": { "0": { "_id": "U8

我想在以下mongodb集合中添加和删除开发人员。可以有许多项目,每个项目可以有许多用户故事,每个用户故事可以有多个开发人员参与其中

问题: 我可以使用哪个mongodb查询向stories集合添加新的开发人员,以及我可以使用哪个mongodb查询从stories集合中删除开发人员

项目的JSON:


你的设计不一致。有些集合是数组,有些是哈希

我倾向于更多地使用散列,但我不会对项目使用普通的“数值”索引。例如:

"stories": {
    "0": {
        "_id": "U89Tq7X8BF2qaBfFzfE99lkb",
        "deadline": "10\/10\/2010",
如果它写的是

"stories": {
    "U89Tq7X8BF2qaBfFzfE99lkb": {
        "deadline": "10\/10\/2010",
开发者也是如此。我想他们有身份证吧?应该如此

"developers": {
    dev1_id : {username : username1},
    dev2_id : {username : username2}
}
现在,您可以使用纯点集管理这些对象

添加新开发人员

吸引开发者


你的设计不一致。有些集合是数组,有些是哈希

我倾向于更多地使用散列,但我不会对项目使用普通的“数值”索引。例如:

"stories": {
    "0": {
        "_id": "U89Tq7X8BF2qaBfFzfE99lkb",
        "deadline": "10\/10\/2010",
如果它写的是

"stories": {
    "U89Tq7X8BF2qaBfFzfE99lkb": {
        "deadline": "10\/10\/2010",
开发者也是如此。我想他们有身份证吧?应该如此

"developers": {
    dev1_id : {username : username1},
    dev2_id : {username : username2}
}
现在,您可以使用纯点集管理这些对象

添加新开发人员

吸引开发者


好的,这是一个解决办法,但它似乎工作得很好。我在服务器上做一些工作,而不是数据库

  projects.findOne({_id : projectId}, function(err, project)
  {
     for(var i = 0; i < project.stories.length; i++)
     {
       if(project.stories[i]._id == storyId)
       {
         var developers = project.stories[i].developers;
         var size = developers.length;

         var developers[size] = {username : username};

          projects.update( {"stories._id" : storyId},
                    {$set:
                      {
                        "stories.$.developers"  : developers
                      }
                    }, false, true);
       }
     }
  } 

好的,这是一个解决办法,但它似乎工作得很好。我在服务器上做一些工作,而不是数据库

  projects.findOne({_id : projectId}, function(err, project)
  {
     for(var i = 0; i < project.stories.length; i++)
     {
       if(project.stories[i]._id == storyId)
       {
         var developers = project.stories[i].developers;
         var size = developers.length;

         var developers[size] = {username : username};

          projects.update( {"stories._id" : storyId},
                    {$set:
                      {
                        "stories.$.developers"  : developers
                      }
                    }, false, true);
       }
     }
  } 

出于某种原因,Rockmongo显示带有方括号的空散列。在JavaScript中,它们是使用花括号启动的。我将修改数据库并尝试一下,谢谢。这是因为它是用PHP编写的。PHP不能区分空数组和空散列,它们是相同的东西,AFAIKI已经看过了,不可能改变数据库结构,因为这意味着要改变大量的查询和函数。在不改变数据库结构的情况下,是否有一个可行的答案来回答我的上述问题?请先修改您的问题,并按照数据库中的方式制作数组和哈希。然后我们来看。我已经更新了问题中的代码,在过去的几个小时里我修改了MongoDB查询,但找不到任何处理双嵌套集合的方法。出于某种原因,Rockmongo显示了带方括号的空哈希。在JavaScript中,它们是使用花括号启动的。我将修改数据库并尝试一下,谢谢。这是因为它是用PHP编写的。PHP不能区分空数组和空散列,它们是相同的东西,AFAIKI已经看过了,不可能改变数据库结构,因为这意味着要改变大量的查询和函数。在不改变数据库结构的情况下,是否有一个可行的答案来回答我的上述问题?请先修改您的问题,并按照数据库中的方式制作数组和哈希。然后我们来看。我更新了问题中的代码,在过去的几个小时里我修改了MongoDB查询,但找不到任何处理双嵌套集合的方法。