阵列上的 Mongo DB 聚合

时间:2021-01-24 08:43:26

标签: arrays database mongodb aggregation-framework aggregate

我正在尝试将元素添加到文档 MongoDB 集合中的数组,聚合(非常规更新)匹配特定名称 但我没有找到正确的语法

例如:

{"name":"TEST1","department":"T1","skills":["JS","HTML"],"expY":5}
{"name":"TEST2","department":"T2","skills":["Java","CSS"],"expY":3}

我想添加到技能数组“CSS”,我尝试排序、匹配、组、项目、($add、$push 等)并且这些语法都不起作用

db.collection.aggregate([ 
   { $match : { name : "TEST1" } },
   HERE I DONT KNOW WHAT IS THE RIGHT SYNTAX TO ADD ELEMENT TO skills array
])

1 个答案:

答案 0 :(得分:1)

如果我没有正确理解您的问题,您希望匹配名称为“TEST1”的所有文档,然后将“CSS”添加到技能数组中。如果这是正确的,这是一种方法:

db.collection.aggregate([
  {
    $match: {
      name: "TEST1"
    }
  },
  {
    $project: {
      name: "$name",
      department: "$department",
      expY: "$expY",
      skills: {
        $concatArrays: [
          "$skills",
          [
            "CSS"
          ]
        ]
      }
    }
  }
])

Playground

以下是如何更新您的文档以将“CSS”添加到数组:

db.your_collection.update({ name : "TEST1" }, { $push: { skills: 'CSS' } })
相关问题