如何在猫鼬中推送新的对象嵌套数组属性?

时间:2020-09-03 09:30:44

标签: node.js database mongodb express mongoose

这是课程模式,我想推送内容对象,但是我找不到什么好方法。请帮助。

import mongoose from "mongoose";

export const Schema = new mongoose.Schema({
  course_en: { type: String },
  course: { type: String },
  module: [
    {
      _id: { 
        type: String
      },
      module_en: String,
      module: String,
      content: [
        {
            _id: { type: String }
          content_en: String,
          content: String,
        }
      ],
    }
  ],
});

const Course = mongoose.model("Course", Schema);

export default Course;

这是我尝试过的代码,但是不起作用,只能添加模块对象

db.update(
      { _id: _id, "module._id": module_id },
      {
        $push: { content: data } 
      }
    )
    .then((result: any) => {
      console.log(`Content Posted ${result}`);
      response.send({ "status": "success" });
    })
    .catch((error: any) => {
      console.log(`Error ${error}`);
      response.send({ "status": "fail" });
    });

2 个答案:

答案 0 :(得分:0)

db.collection.update(
{ _id: _id, "module._id": module_id },
{ "$push": 
    {"module.$.content": 
        {
            "_id":"123",
            "content_en": "hello",
            "content": "hey"
        }
    }
})

答案 1 :(得分:0)

假设data是要添加到content数组的对象,则可以尝试如下操作:

db.update(
      { _id: _id, "module._id": module_id },
      {
        $push: { "module.$.content" : data } 
      }
)