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

标签 javascript mongodb express mongoose parameters

我正在 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/

相关文章:

javascript - Adobe animate CC Javascript gotoandplay 延迟

javascript - 如何有两个后备图像占位符

arrays - Mongodb查询基于数组中特定位置的项目

javascript - NodeJS + Express + Mongoose(MongoDB) 数据库插入报错

express - 如何为Webpack构建的生产React Bundle.js提供服务?

Javascript/HTML 按钮未显示

javascript - 自动化网络事件,包括表单提交、javascript 和 SSL

javascript - 根据类别更新对象类型的mongodb字段

node.js - Mongoose ,更新子文档

node.js - ExpressJS 在导航目录时错误地重写路径