在数据库的主对象上,我有一个属性,该属性是7个项目(天)的数组。每天都有另一家餐馆。
我正在努力将$ push数据放入特定的日期数组。
在我的数据库中,我希望数据结构看起来像这样
restaurants_cook_for: [
{
monday: [{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
},
{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
}]
},
{
tuesday: [{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
}]
}
]
在我的API文件中,我有类似以下内容,但。我似乎无法将其发布到星期一或星期二等数组中。
const query = { userid: req.body.userid };
const rest_name = req.body.rest_name;
const day_or_night = req.body.day_or_night;
const dayOfWeek = req.body.day_of_week;
const arrayFilters = { arrayFilters: [{ dayOfWeek: 0 }], upsert: true};
const update = {
$push: {
"restaurants_cook_for.$[dayOfWeek]": [{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
}]
}
};
ChefProfile.update(query, update, arrayFilters, (err, raw) => {
if (err) throw err;
if (raw) {
console.log('SUCCESS: ' + JSON.stringify(raw));
console.log("1 document updated");
res.sendStatus(200);
}
});
我的模型文件现在有点丑陋,因为我正试图找出一种方法来传递dayOfWeek变量并使之动态。我目前依靠的是“ strict:false”。
const schemaOptions = {
collection: "chefs",
strict: false
};
const ChefProfile = new mongoose.Schema({
restaurants_cook_for: [{
}]
}, schemaOptions);
当我四处转转时,我要么会得到任何提示,但没有添加任何内容,或者当我真的只想在星期一数组中添加一家餐馆时,我会得到一个全新的星期一对象。
我觉得我要离开这里了。任何帮助或朝着正确的方向努力都将是惊人的!
答案 0 :(得分:0)
首先,您可以将Restaurants_cook_for数组转换为days对象:
restaurants_cook_for: {
monday: [{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
},
{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
}],
tuesday: [{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
}],
...
};
然后在查询中,仅更新特定日期:
const update = {
$push: {
`restaurants_cook_for.${dayOfWeek}`: {
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
}
}
};