平均堆栈:如何从MongoDB聚合查询访问数据?
我有一个问题,我的聚合查询没有将任何结果返回到我的res.json()。。。 查询类似于Node/Express中的查询:平均堆栈:如何从MongoDB聚合查询访问数据?,mongodb,aggregation-framework,mean-stack,Mongodb,Aggregation Framework,Mean Stack,我有一个问题,我的聚合查询没有将任何结果返回到我的res.json()。。。 查询类似于Node/Express中的查询: exports.group_Produkt_by_month = function(req,res) { Produkt.aggregate([ { "$unwind":"$DemonstratorWerte" }, { "
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())
}
当我在MongoShell中执行查询时,查询被正确执行并返回文档列表。现在我想把文档以res.json(docs)或类似的形式返回给我,作为webbrowser中的结果文档数组。。。我该怎么做?我听说必须使用
.toArray()
方法,但我不知道如何在Node/Express中以及在何处执行此操作…您需要创建rest api,然后执行查询或首先查看文档如何使用Express在Node中获取/插入数据,检查必须编写代码的文件夹/文件结构。您可以连接任何数据库
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);
});
}
嗯,
我发现这和我的路线有关我猜。。。它找不到路由,因为它可能不够清晰,所以我添加了更多前缀链接/../。。。然后它就成功了。我已经创建了完整的REST API,包括路由、模型、app.js等。问题是,我的其他路由和API方法与Produkt模式都很好地工作,我有另一个聚合函数,上面几行,它会返回正确的json响应文档,只使用这个函数,不会返回任何东西,我甚至没有得到一个错误控制台,问题似乎是,它没有进入功能不知何故,但我不知道为什么。。。我在我的函数开始时做了“console.log”(“Entering function…”),但没有任何东西被打印到控制台上。。。有什么想法吗?我的routes函数看起来是这样的:函数ProduktRoutes(router){var ProduktController=require('../controllers/ProduktController')router.route('/Produkt').get(ProduktController.list_all_Produkt).post(ProduktController.create_an_Produkt)router.route('/Produkt/:Produkt_id').get(ProduktController.getProduktbyID).put(ProduktController.updateProdukt).delete(ProduktController.deleteProdukt)router.route('/Produkt/Monat').get(ProduktController.group_Produkt_by_month)}module.exports=ProduktRoutes;在使用get调用API时进行检查,如上所述,作为get或goto network选项卡/邮递员使用适当的方法检查API。