我想用相当复杂的方案来更新文档。
我想通过原子更新来做到这一点(而不是在内存中修改它,然后调用.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
);
答案 0 :(得分:0)
因此,您想添加/删除位于会话阵列中的选民阵列中的项目。您可以将位置运算符$用于数组(https://docs.mongodb.com/manual/reference/operator/update/positional/)
EventModel.update(
{_id: event._id, "sessions.id": event.sessionId},
{$push: {"sessions.$.voters": "newStringToAdd"}
)