通过猫鼬将项添加/删除到数组数组中

时间:2019-07-23 00:32:21

标签: mongoose

我想用相当复杂的方案来更新文档。

我想通过原子更新来做到这一点(而不是在内存中修改它,然后调用.save())。

Push items into mongo array via mongoose-实际说明了如何将项目推入数组。但是我的情况更复杂。

const eventSchema = new Schema({     名称: {         类型:“字符串”     }

sessions: {
    type: [
        {
            id: {
                type: 'Number'
            },
            voters: {
                type: [
                    'String'
                ]
            }
        }
    ]
}

});

///////////////////////////////////////////////// ///////////

event
    |
    _id 
    |
    name
    |
    sessions[object, object ...]
             |
             id
             |
             voters[string, string ...]

我有事件ID(_id),会话(id),并且需要将项目添加/删除到选民数组中。

EventModel.update(
    { _id: event._id }, 
    { $push: { sessions[?? I have to find session by session.id ??]: "Jhon" } },
    done
);

1 个答案:

答案 0 :(得分:0)

因此,您想添加/删除位于会话阵列中的选民阵列中的项目。您可以将位置运算符$用于数组(https://docs.mongodb.com/manual/reference/operator/update/positional/

EventModel.update(
    {_id: event._id, "sessions.id": event.sessionId},
    {$push: {"sessions.$.voters": "newStringToAdd"}
)