使用1:n关系优化MongoDB查询

使用1:n关系优化MongoDB查询,mongodb,mongoose,foreach,query-optimization,Mongodb,Mongoose,Foreach,Query Optimization,我写了一些函数代码,我想知道如何改进这段代码。目前,我对数据库进行了两次调用,我想知道是否可以使用聚合、mongoose forEach方法或任何其他方法以干净的方式合并这些调用 我有两个具有一对多关系的表:Users和days。用户可以有很多天,并且每天只有一个用户。我想为每个用户创建一个唯一的一天,并将其推送到嵌入式数据数组中,因为我将把用户信息存储到每个day对象中 用户n:1天 User.find().then ( students => { for(let st

我写了一些函数代码,我想知道如何改进这段代码。目前,我对数据库进行了两次调用,我想知道是否可以使用聚合、mongoose forEach方法或任何其他方法以干净的方式合并这些调用

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

用户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");
         }
       );
     }
   }   
)

此代码正在运行,但我完全不确定是否遵循最佳实践。

您可以通过以下方式为每个
用户添加新的

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

此代码为每个用户创建
Day
,因此Day不是唯一的谢谢您的回答。但这种方式将为每一位用户带来新的一天。我的需求是不同的,我想为每个用户创建一个独特的一天。谢谢你的支持support@EelkeJohnson在这种情况下是多对多的。假设:user1-day1(1),user2-day1(2)。第1天(1)和第1天(2)之间的区别是什么?每天都有一个唯一的ID,每个用户都有一个存储唯一日期ID的数组数据。因此,当我创建一天时,它对用户来说应该是唯一的。因为我将把用户的数据存储到day对象中。因此,每天只有一个用户,而一个用户可以有很多天。@EelkeJohnson请更新您的问题,您的示例代码没有提到以下语句:
我将把用户的数据存储到day对象中。