代码之家  ›  专栏  ›  技术社区  ›  Sergei R

MongoDB:如何更新嵌套数组[重复]

  •  0
  • Sergei R  · 技术社区  · 5 年前

    这个问题已经有了答案:

    我收集了以下数据:

    {
      "_id": { "$oid":"5c3334a8871695568817ea26" },
      "country":"Afghanistan",
      "code":"af",
      "region":[
        {
          "path":["Afghanistan"],
          "_id":{"$oid":"5c3366bd3d92ac6e531dfb43"},
          "name":"Badakhshan",
          "city":[]
        },
        ...
      ]
    },
    

    我需要在城市字段中添加城市(数组)。 我的模型如下:

    const schema = new mongoose.Schema({
      country: { type: String },
      code: { type: String },
      region: [{
        name: { type: String },
        path: { type: Array },
        city: [{
          name: { type: String },
          path: { type: Array },
          latitude: { type: String },
          longitude: { type: String },
        }],
      }],
    })
    

    我发送查询

    Model.updateOne(
      { code: country.code },
      { $push: { 'region.city': { $each: savedCities } } },
    )
    .exec()
    

    并接收错误mongoError:无法在元素区域中创建字段'city':…… 我犯了什么错误? 我看了相似的主题,但没有找到答案。

    1 回复  |  直到 5 年前
        1
  •  2
  •   mickl    5 年前

    你可以使用 $ positional operator 指示哪个元件的外径 region 应更新数组,请尝试:

    Model.updateOne(
        { code: country.code, 'region.name': 'Badakhshan' },
        { $push: { 'region.$.city': { $each: savedCities } } },
    )