这是我目前拥有的文档:
{
"_id": "",
"title": "My Watchlist",
"series": [{
"seriesId": 1,
"following": true,
"seasons": []
}, {
"seriesId": 1,
"following": false,
"seasons": []
}]
}
您可以看到,当前有两个系列ID为1的对象,但后面的布尔值不同。
如果查询与_id匹配,则应将新对象推入系列中,如果在"series"数组中已经存在具有相同"seriesId"的对象,则应更改该对象中的字段,而不是添加新对象。
我目前有以下查询:
users.update(
{"_id": req.body.userId},
{
"$push": {
"series": {"seriesId": req.body.seriesId, "following": req.body.following}
}
}, (err, data) => {
if (err)
next(err);
});
如果我使用$set,它不会在对象原本不存在的情况下添加对象,据我所知,你不能同时使用$push和$set。有没有办法解决这个问题,或者我必须重新考虑我的模式?