Arrays 嵌套数组mongoose上的推/拉值

Arrays 嵌套数组mongoose上的推/拉值,arrays,mongoose,nested,Arrays,Mongoose,Nested,我正在尝试使用express更新mongoose模式中嵌套数组中的值。我已经准备好了我所需要的代码来更新它,但是数组没有得到更新 因此,我们的想法是能够拥有一个包含两个字段的数据库模式对象数组,即schemaName和schemaFields。我希望能够根据需要更新(添加/删除)特定模式对象的schemaFields字段中的值 我已经在这里和互联网上的其他地方尝试了很多东西,但似乎没有任何效果。我试着使用findOneAndUpdate、findbyi和update等 我的猫鼬模式如下: let

我正在尝试使用express更新mongoose模式中嵌套数组中的值。我已经准备好了我所需要的代码来更新它,但是数组没有得到更新

因此,我们的想法是能够拥有一个包含两个字段的数据库模式对象数组,即schemaName和schemaFields。我希望能够根据需要更新(添加/删除)特定模式对象的schemaFields字段中的值

我已经在这里和互联网上的其他地方尝试了很多东西,但似乎没有任何效果。我试着使用findOneAndUpdate、findbyi和update等

我的猫鼬模式如下:

let databaseSchema = new Schema({
  schemaName: { type: String },
  schemaFields: [String]
});

let databaseSchemas = new Schema(
  {
    dbSchemas: [databaseSchema]
  },
  {
    collection: 'databaseSchemas'
  }
);
schemasModel.mongo
    .update(
      {
        _id: req.body.documentId,
        'dbSchemas._id': req.body.schemaId 
      },
      console.log('preparin to push the field \n'),
      {
        $push: {
          'dbSchemas.$.schemaFields': req.body.newField
        }
      }
    )
    .then(() => {
      res.send('new field added successfully');
    });
schemasModel.mongo
.update(
  {
    _id: req.body.documentId,
    'dbSchemas.schemaName': req.body.schemaToSearch
  },
  {
    $push: {
      'dbSchemas.$.schemaFields': req.body.newField
    }
  }
)
.then(() => {
  res.send('new field added successfully');
});
我的更新功能如下:

let databaseSchema = new Schema({
  schemaName: { type: String },
  schemaFields: [String]
});

let databaseSchemas = new Schema(
  {
    dbSchemas: [databaseSchema]
  },
  {
    collection: 'databaseSchemas'
  }
);
schemasModel.mongo
    .update(
      {
        _id: req.body.documentId,
        'dbSchemas._id': req.body.schemaId 
      },
      console.log('preparin to push the field \n'),
      {
        $push: {
          'dbSchemas.$.schemaFields': req.body.newField
        }
      }
    )
    .then(() => {
      res.send('new field added successfully');
    });
schemasModel.mongo
.update(
  {
    _id: req.body.documentId,
    'dbSchemas.schemaName': req.body.schemaToSearch
  },
  {
    $push: {
      'dbSchemas.$.schemaFields': req.body.newField
    }
  }
)
.then(() => {
  res.send('new field added successfully');
});

因此,我通过删除console.log()作为model.update()函数的第二个参数来解决这个问题。很显然,这就是这次行动的目标

Model.update函数的工作代码如下:

let databaseSchema = new Schema({
  schemaName: { type: String },
  schemaFields: [String]
});

let databaseSchemas = new Schema(
  {
    dbSchemas: [databaseSchema]
  },
  {
    collection: 'databaseSchemas'
  }
);
schemasModel.mongo
    .update(
      {
        _id: req.body.documentId,
        'dbSchemas._id': req.body.schemaId 
      },
      console.log('preparin to push the field \n'),
      {
        $push: {
          'dbSchemas.$.schemaFields': req.body.newField
        }
      }
    )
    .then(() => {
      res.send('new field added successfully');
    });
schemasModel.mongo
.update(
  {
    _id: req.body.documentId,
    'dbSchemas.schemaName': req.body.schemaToSearch
  },
  {
    $push: {
      'dbSchemas.$.schemaFields': req.body.newField
    }
  }
)
.then(() => {
  res.send('new field added successfully');
});