如何在mongodb中更新对象数组的属性?

时间:2018-12-21 12:08:05

标签: javascript mongodb mongoose

我需要根据要调用的函数将对象数组的属性(“活动”)的状态更改为false或true。

{
    "_id": ObjectId("59fc98974aceec3e70a18715"),
    "name": "Mostaganem",
    "destinations": [
        {
            "active": true,
            "seaport": ObjectId("59fc98594aceec3e70a18712")
        },
        {
            "active": false,
            "seaport": ObjectId("59fc98884aceec3e70a18714")
        }
    ]
}

如果我在robo3T上执行此请愿书,则它会更改,但是当我通过api调用此函数时,它没有更改,您能帮我吗?

async deactivate(id) {
    /* await this.update(
        { destinations: { $elemMatch: { seaport: id } } }, 
        { $set: { 'destinations.$.active': false } }, 
        { multi: true }); */
    await this.update({ '_id': id }, { $set: { 'destinations.$[].active':    false } });
}


async deactivate(id) {
    // await this.update({ destinations: { $elemMatch: { seaport: id } } // }, {    $set: { 'destinations.$.active': false } }, { multi: true });
    await this.update({ '_id': id }, { $set: { 'destinations.$[].active': false } });
},

1 个答案:

答案 0 :(得分:0)

我正在回答自己的可用情况:

{
"_id" : ObjectId("539b6b5dc7ac9bc0316e3d61")
"permissions" : {
        "projects" : [
            {
                "edit" : true,
                "view" : true,
                "projectId" : ObjectId("532708cba8ed009019151b13"),
            }
        ],
}

要更新项目权限中的视图键,请执行以下操作:

db.users.update({ _id: ObjectId("539b6b5dc7ac9bc0316e3d61"), 'permissions.projects.projectId': ObjectId("532708cba8ed009019151b13") }, { $set: {'permissions.initiatives.$.view': false }})

美元($)指向对象项目数组,我们在查询中输入了其ID,并更新了数组中的特定对象。