均值堆栈:如何从 MongoDB 聚合查询访问数据?

Mean stack: How to access data from MongoDB aggregation query?

我有问题,我的聚合查询没有 return 任何结果到我的 res.json()... 查询在 Node / Express 中看起来像这样:

exports.group_Produkt_by_month = function(req,res) {
        Produkt.aggregate([
            {
                "$unwind":"$DemonstratorWerte"
            },
            {
                "$group": {
                    "_id": {
                        "DemoID": "$DemonstratorWerte.Demonstrator", "Monat": {"$month":"$Erstellungszeitpunkt"}
                    },
                    "Anzahl":{"$sum":1}
                }
            },
            {
                "$project": {"DemoID": "$_id.DemoID", "Monat": "$_id.Monat", "Anzahl":1, "_id":0}
            },
            {
                "$addFields": { 
                    "Monat": { 
                        "$let":  { 
                            "vars": {  
                                "monthsInStrings": [, "Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] 
                            }, 
                            "in": {  
                                "$arrayElemAt": ['$$monthsInStrings','$Monat'] 
                            } 
                        } 
                    } 
                } 
            }
        ]).exec(function(err, prod) {
        if (err) {
                console.log(err);
            }

        else {
            console.log(typeof prod);
            console.log(prod[1])
            console.log(prod);
            res.json(prod);
        }
    }).then((res) => res.json())

    }

当我在 mongo shell 中执行查询时,查询被正确执行并且 return 是一个文档列表。现在我想将文档作为 res.json(docs) 或类似于网络浏览器中的结果文档数组返回给我……我该怎么做?我听说必须使用 .toArray() 方法,但我不知道在 Node/Express...

中如何以及在何处执行此操作

您需要创建其余部分 api,然后进行查询或首先查看文档如何使用 express fetch/insert 节点中的数据,检查您所在位置的 folder/file 结构必须写代码。 check here 您可以连接任何数据库。

exports.group_Produkt_by_month = function(req,res) {
       Produkt.aggregate([
            {
                "$unwind":"$DemonstratorWerte"
            },
            {
                "$group": {
                    "_id": {
                        "DemoID": "$DemonstratorWerte.Demonstrator", "Monat": {"$month":"$Erstellungszeitpunkt"}
                    },
                    "Anzahl":{"$sum":1}
                }
            },
            {
                "$project": {"DemoID": "$_id.DemoID", "Monat": "$_id.Monat", "Anzahl":1, "_id":0}
            },
            {
                "$addFields": { 
                    "Monat": { 
                        "$let":  { 
                            "vars": {  
                                "monthsInStrings": [, "Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] 
                            }, 
                            "in": {  
                                "$arrayElemAt": ['$$monthsInStrings','$Monat'] 
                            } 
                        } 
                    } 
                } 
            }
        ],function(err,result) {
        if(err) res.sendStatus(404);
         res.send(result);
      });
 }

好的, 我发现它与我的路线有关,我猜……它没有找到路线,因为它可能不够明显,所以我附加了更多前缀链接 /.../... 然后它起作用了。