javascript 如何在Mongodb中使用Node js在对象数组中添加对象?

31moq8wy  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(128)

我想在MasterCourse中更新我的courseModules。在下面的JSON中,我在courseModules中有两个对象。我想如果moduleId存在于courseModules中,则更新它,否则创建一个新对象并返回具有更新值的courseModules。我正在使用Node js和mondodb,mongoose。无法找到如何实现此功能。
JSON或MONGODB数据:

"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"
        },
    ],
}

]
要执行的查询:

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

4ktjp1zp1#

若要在项目不存在时新增-

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

要更新值(如果存在),请执行以下操作-

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

这些查询对我来说很有效,你可以根据你的数据或要求更改变量的名称。

相关问题