首页 > 解决方案 > MongoDB/Mongoose 如何在复杂结构中添加元素

问题描述

我正在处理的项目中有这种复杂的结构,但我找不到在“parametri”数组中批量添加一些值的方法。

这是一个示例文档:

在此处输入图像描述

我的目标是将一些值添加到数组“protocolli”位置 1 的 Object 内部的“parametri”数组中。

在 mongoDB Compass 中,我可以使用“'protocolli.nome': 'protocollo-2'”进行选择,所以我尝试了以下代码(该项目是用 TS 编写的,使用 NestJs 后端和 Mongoose 与 MongoDB 进行通信) :

  this.model.updateMany(
       { 'protocolli.nome': ProtocolloAlert.PROTOCOLLO_2 },
       {
         $push: {
           'protocolli.parametri': {
             $each: [
               TipoParametro.FAT_MASS,
               TipoParametro.DISTANCE,
               TipoParametro.MUSCLE_MASS,
               TipoParametro.STEPS,
               TipoParametro.CALORIES,
               TipoParametro.MINUTES,
             ],
           },
         },
       },
       { multi: true }
     )

我已经尝试过 $push、$addToSet、$set 没有积极的结果..

使用这种方法,我有以下错误:

MongoError:无法在元素 {protocolli:[ { nome:“protocollo-1”,parametri:[“temp”,“spo2”,“hr”,“sys”]中创建字段'parametri',描述:“控制中的Attivazione警报房间, inserimento nei log degli alert in corso, salvataggio nella scheda alert del paziente" }, { nome: "protocollo-2", parametri: [ "dya", "pulse", "fr", "pef", "fev1" 、“fvc”、“fev1fvc”、“etco2”、“freqRes”、“葡萄糖”、“体重”、“身高”、“bmi”、“体脂肪”、“hba1c”、“totCh”、“甘油三酯”、“ hdl", "ldl" ], 描述: "Salvataggio nella scheda alert del paziente" } ]} 在 Function.create (C:....\node_modules\mongodb\lib\core\error.js:57:12)

提前致谢。

标签: mongodbmongoosedocument

解决方案


推荐阅读