均值堆栈:如何从 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);
});
}
好的,
我发现它与我的路线有关,我猜……它没有找到路线,因为它可能不够明显,所以我附加了更多前缀链接 /.../... 然后它起作用了。
我有问题,我的聚合查询没有 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);
});
}
好的, 我发现它与我的路线有关,我猜……它没有找到路线,因为它可能不够明显,所以我附加了更多前缀链接 /.../... 然后它起作用了。