Я использую агрегатную функцию в 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)
})
})
Я отладил ееНемного похоже, что match не передается в $ 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);