@komigor

Как вернуть со содержимое поля с mongoose?

У меня есть схема mongo которая выглядит вот так:
//Main object
{
// в нем поля
user: "пум-пум-пум"
password:"абра-казябра"
tasks: [
{
   name: ''пум-пум-пум",
   startTime: "тут дата",
},

{
   name: ''пум-пум-пум",
   startTime: "тут дата",
},

{
   name: ''пум-пум-пум",
   startTime: "тут дата", 
 },
]
}


Вот так я к ней обращаюсь то-есть если есть таск который надо выполнить сейчс то мы ополучаем юзера
User.findOne( {"tasks.startTime":  toTimeZone( Date.now(),'Europe/Berlin').toString()}, (err ,user) => {


})


Но вот вопрос, а как мне получить тот объект в tasks если я не знаю какой он по счету конретно? Ведь он может быть как первым так и последним, a мне нужно вернуть имя таска время которого совпадает с Date.now().
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
Можно сделать через Aggregation

let pipeline = [
    {
        $project: {
            tasks: {
                $filter: {
                    input: "$tasks",
                    as: "task",
                    cond: {$eq:["$$task.startTime",  toTimeZone( Date.now(), 'Europe/Berlin').toString()]}
                }
            }
        }
   }
]
db.user.aggregate(pipeline);


В массиве tasks останутся только те элементы, поле startTime которых совпадает с toTimeZone( Date.now(), 'Europe/Berlin').toString()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы