gpt4 book ai didi

javascript - 如何使用 express 和 mongoose 中的参数使聚合函数动态化

转载 作者:可可西里 更新时间:2023-11-01 10:09:10 25 4
gpt4 key购买 nike

我在 mongoose 中使用聚合函数来获取一些数据,这里是它的静态实现

app.get("/male",function (req,res) {
Record.aggregate([
{
$match:
{"gender": "male"}
},
{
$group:{
_id : "$type",
total : {$sum : 1}
}
},{
$sort: {_id: 1}
}
]).exec((err,data) => {
if (err) {console.log(err)}

res.json(data)

})

})

我想让它完全动态,所以我尝试了这个

  app.get("/:query/:type/:match",function (req,res) {

var match = req.params.match

Record.aggregate([
{
$match:
{match : req.params.type}
},
{
$group:{
_id : "$"+req.params.query,
total : {$sum : 1}
}
},{
$sort: {_id: 1}
}
]).exec((err,data) => {
if (err) {console.log(err)}

res.json(data)

})

})

我稍微调试了一下,ma​​tch 似乎没有传入 $match

如果我把静态变量而不是匹配它工作

这是它的架构

   var mongoose = require('mongoose');

var RecordSchema = new mongoose.Schema({

type:String,
gender:String,
age:Number,
timeSpent:Number,
arrivedAt:Number

})

module.exports = mongoose.model("Record", RecordSchema);

最佳答案

试试这个:

app.get("/:query/:type/:match",function(req,res) {

var match = req.params.match;
var type= req.params.type;
var query = "$"+req.params.query;
var matchCriteria = {};
matchCriteria[match]=type;


Record.aggregate([
{
$match:matchCriteria
},
{
$group:{
_id : query,
total:{$sum:1}
}
},{
$sort: {_id: 1}
}
]).exec((err,data) => {
if (err) {console.log(err)}
res.json(data)
});
});

关于javascript - 如何使用 express 和 mongoose 中的参数使聚合函数动态化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52834817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com