以1:n关系优化MongoDB查询

时间:2020-03-29 09:12:13

标签: mongodb mongoose foreach query-optimization

我写了一些功能代码,不知道如何改善此代码段。目前,我对数据库进行了两次调用,我想知道是否可以使用聚合,猫鼬forEach方法或任何其他想法以干净的方式合并它们!

我有两个具有一对多关系的表格:用户和天数。用户可以有很多天,每天只有一个用户。我想为每个用户创建唯一的一天并将其推送到嵌入式数据数组中,因为我会将用户信息存储到每天的对象中。

用户n:1天

 User.find().then
(
   students => {
     for(let student of students){
       const newDay = new Day({
         date: moment().format("YYYY MM DD"),
       });
       newDay.save();
       User.findOneAndUpdate({_id: student.id},{'$push':{data: newDay.id}})
       .then
       (
         () => {
           console.log("Success");
         }
       );
     }
   }   
)

此代码有效,但我不确定完全遵循最佳做法。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式为每个Day添加新的User

new Day({
   date: moment().format("YYYY MM DD")
}).save().then((newDay) => {
    User.updateMany({}, {'$push':{data: newDay.id}})
        .then(() => {
            console.log("Success");
        });
});