Получение пустого массива как совокупного результата с $ unwind - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть документ, как показано ниже, я применил агрегированный запрос, используя mongoose, который вставляется после данных json. Здесь я пытаюсь использовать поля для подсчета времени. Результат запроса пустой массив, пожалуйста, помогите найти ошибку в запросе. Запрос работает на удаление $unwind и связанного с ним $project поля

{  
   "_id":"5b9cbeff67ea7bc00c9917a5",
   "route_index":0,
   "route_name":"NH85", 
   "access_type":"public",
   "type":"bus", 
   "duration_days":null,
   "duration_hours":0.23,
   "created_on":"2018-09-15T07:50:17.211Z",
   "title":"Rx100",
   "description":"Ls",
   "timings":[  
      {  
         "departure":"08:00",
         "destination":"08:23",
         "_id":"5b9cbeff67ea7bc00c9917a3",
         "trackings":[  

         ]
      },
      {  
         "departure":"10:00",
         "destination":"10:23",
         "_id":"5b9cbeff67ea7bc00c9917a2",
         "trackings":[  

         ]
      }
   ],
   "created_uid":"5b8f1a9db83bc9bf3d89dcc5", 
   "__v":0
}

Запрос, который я пробовал, находится здесь:

Transport.aggregate([
        { $unwind: "$timings" } 
        {
            $project: {
                title: 1,  
                "trip_timings": "$timings"
            }
        }, 
        { $skip: ((perPage * page) - perPage) },
        { $limit: perPage }
    ], function (err, data) {
        if (err) {
            res.json(err);
        }
        res.json(data);
    });

1 Ответ

0 голосов
/ 15 сентября 2018

Попробуйте установить для preserveNullAndEmptyArrays значение true в операции $ unwind.Возможно, результаты пропускаются, поскольку поле «trip_timings» содержит пустые массивы.Поведение $ unwind по умолчанию состоит в том, что игнорируются документы, в которых поле для размотки не существует или является пустым массивом.Подробнее здесь: https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/#behaviors

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...