将数据推送到MongoDB中的嵌套数组中

时间:2014-04-21 11:31:36

标签: mongodb

什么是将数据推送到数组中的最佳方式,该数组在数组中嵌套了几个级别......

这是一个示例文档(组成)代表文档中的数据,除了真实文档有更多的学校有更多的课程和更多的学生。每件事'有一个唯一的ID: -

{
  _id: 4353467865,
  school : [
     { 
       _id: 3425353,
       name: 'school of rock',
       class: [
           {
           _id: 3242342
           name: 'Room1',
           students: [
             { _id: 345456562, name: 'Kevin' }
           ]
           },
           {
             // more classes with more students nested underneath
           }
       ]
     },
     {
       // more schools, classes, students...
     }
  ]
}

现在我知道了文档,学校和班级的ID,现在我想对该班级的学生数组{_id: 234554363, name: 'Barry'}进行更新$推送。

如何构建更新查询?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我回答了自己的问题,因为我现在已经使用了Mongo一段时间。

第一个答案......

在设计Mongo的东西时,我是超级偏执的,如果我可以尝试在一个文档中获取东西,因为这是整个好处。现实是你不必过于偏执。学校和班级可以是单独的收藏。它确实取决于你如何使用它们,但最重要的是,这些天我会做单独的收集。

第二个答案......

我需要做嵌套数组,但是任何级别的嵌套数组都可以分离成非嵌套数组,其中包含使用mongo进行更新的简单

所以

school : [
 { 
  _id: 3425353,
   name: 'school of rock',
 }
],
classes: [
           {           
           _id: 3242342
           school_id: 3425353,
           name: 'Room1',
           }
],
students: [
             { _id: 345456562, class_id: 3242342, name: 'Kevin' }
             { _id: 345456563, class_id: 3242342, name: 'Gilbert' }
          ]