Оптимизация запроса MongoDB с отношением 1: n - PullRequest
0 голосов
/ 29 марта 2020

Я написал некоторый функциональный код, и мне интересно, как я могу улучшить этот фрагмент. В настоящее время я делаю два вызова в базу данных, и мне интересно, смогу ли я объединить их чистым способом, используя агрегацию, метод mon goose forEach или любые другие идеи!

У меня есть две таблицы с отношением «один ко многим»: пользователи и дни. Пользователи могут иметь много дней, и каждый день может иметь только одного пользователя. Я хочу создать уникальный день для каждого пользователя и поместить его sh во встроенный массив данных, поскольку я буду хранить пользовательскую информацию в объекте каждого дня.

Пользователь 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 голосов
/ 29 марта 2020

Вы можете добавить новые Day для каждого User следующим образом:

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