简体   繁体   中英

How to add object in Array of Objects using Node js in Mongodb?

I want to update my courseModules inside MasterCourse . In below JSON I have two Objects in courseModules . I want if moduleId exist in courseModules then update it else create a new object and return the courseModules with updated value. I am using Node.js and mondodb, mongoose. Not able to find how can I achieve this functionality.

JSON OR MONGODB Data:

"MasterCourse": [
{
    "_id": "6392f2611e7d670eca9712fa",
    "courseTitle": "My Course Title",
    "awardURL": "award.png",
    "courseModules": [
        {
            "moduleId": 0,
            "moduleTitle": "Module Title 1",
            "moduleDescription": "Module 1 description",
            "totalSessions": 3,
            "_id": "6392f2611e7d670eca97e12d"
        },
        {
            "moduleId": 1,
            "moduleTitle": "ModuleTitle 2",
            "moduleDescription": "Module 2 description",
            "totalSessions": 4,
            "_id": "6392f2611e7d670eca9711wd"
        },
    ],
}

]

Query want to perform:

{
    "moduleId": 2,
    "moduleTitle": "Module Title 3",
    "moduleDescription": "Module 3 description",
    "totalSessions": 8,
}

To add if item not exist -

masterCourse.updateOne({ "_id": req.params.id }, { $addToSet: { "courseModules": req.body } })

To update the value if exist -

 masterCourse.updateOne({ "_id": req.params.id, "courseModules._id": ModuleID }, { $set: { "courseModules": req.body } })

These queries works for me, you can change the variable's name according to your data or requirement.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM