Агрегирование с использованием созданного Ат с сервером разбора не работает - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь выполнить агрегирование с помощью сервера Parse (back4app, Parse server v2.7.1), но хотя я могу агрегировать с помощью полей, которые я явно создал в mongoDb, я не могу агрегировать с помощью полей 'createAt 'или' updatedAt '.

Например, если я вызову:

query.aggregate(pipeline)

С:

{ 
  project: {
   objectId: "$objectId",
   instr: "$instructions" 
  } 
};

У меня есть массив записей, таких как:

{instr: "1", objectId: "CNHAdpMD0U"}

Если на другой стороне я использую:

{ 
  project: {
    objectId: "$objectId",
    date: "$createdAt" 
  } 
};

У меня просто:

{objectId: "CNHAdpMD0U"}

Наконец, конвейер:

{ 
  project: {
    objectId: "$objectId",
    dayOfYear: { $dayOfYear: "$createdAt" }
  } 
};

Дает "500 - внутренняя ошибка сервера", но я думаю, это связано с отсутствующим извлечением "$ creationAt".

1 Ответ

0 голосов
/ 22 мая 2018

похоже, на Parse Server есть исправление по этому поводу.В данный момент вы можете использовать, например, облачную функцию ниже:

Parse.Cloud.define('yourFunctionName', (req, res) => {
    var pipeline = [{
        group: { 
            objectId: { day: { $dayOfMonth: "$_created_at" }, month: { $month: "$_created_at" }, year: { $year: "$_created_at" } }, 
            count: { $sum: 1 } }
        }
    ];
    var query = new Parse.Query(Parse.User);
    query.aggregate(pipeline, { useMasterKey: true })
        .then(function(results) {
            res.success(results);
        })
        .catch(function(error) {
            res.error(error)
        });
});
...