首页 > 解决方案 > 通过使用 createdAt 与 Parse 服务器进行聚合不起作用

问题描述

我正在尝试使用 Parse 服务器(back4app,Parse server v2.7.1)进行聚合,但是虽然我能够使用我在 mongoDb 中显式创建的字段进行聚合,但我无法使用字段“createdAt”或'更新时间'。

例如,如果我调用:

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 - 内部服务器错误”,但我猜是由于缺少“$createdAt”的检索。

标签: javascriptmongodbparse-platformaggregate

解决方案


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)
        });
});

推荐阅读