将新对象插入嵌套数组中

问题描述 投票:0回答:1

我在mongodb中有一份文件如下:

{
   "_id" : 1,
   "name" : "Christine Franklin",
   "degrees" : [
      {
         "level" : "Master",
         info:[ {"major" : "Biology",
         "completion_year" : 2010,
         "faculty" : "Science"}]
      },
    {
         "level" : "Bachelor",
         info : [{"major" : "Biology",
         "completion_year" : 2008,
         "faculty" : "Science"}]
      }
]

}

我想只在“级别”为“Bachelor”的情况下将new_object(下面提到)添加到数组“info”中。如何在node.js中编写查询?

new_object = {"major" : "chemistry",
         "completion_year" : 2010,
         "faculty" : "Science"}

最终文档应如下所示:

{
   "_id" : 1,
   "name" : "Christine Franklin",
   "degrees" : [
      {
         "level" : "Master",
         info:[ {"major" : "Biology",
         "completion_year" : 2010,
         "faculty" : "Science"}]
      },
    {
         "level" : "Bachelor",
         info : [{"major" : "Biology",
         "completion_year" : 2008,
         "faculty" : "Science"},{"major" : "chemistry",
         "completion_year" : 2010,
         "faculty" : "Science"}]
      }
]

}
arrays mongodb nested insert-update
1个回答
0
投票

您可以使用arrayFilters选项在update方法中使用$ push运算符

db.test.update(
  { _id: 1 },
  { $push : { "degrees.$[degree].info" : 
      {
          "major" : "chemistry",
          "completion_year" : 2010,
          "faculty" : "Science"
      } 
  }},
{ arrayFilters : [ {"degree.level" : { $eq: "Bachelor" } } ], multi : true }

)

The filtered positional operator

The $push operator

© www.soinside.com 2019 - 2024. All rights reserved.