使用1:n关系优化MongoDB查询
我写了一些函数代码,我想知道如何改进这段代码。目前,我对数据库进行了两次调用,我想知道是否可以使用聚合、mongoose forEach方法或任何其他方法以干净的方式合并这些调用 我有两个具有一对多关系的表:Users和days。用户可以有很多天,并且每天只有一个用户。我想为每个用户创建一个唯一的一天,并将其推送到嵌入式数据数组中,因为我将把用户信息存储到每个day对象中 用户n:1天使用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
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对象中。