我使用Mongoose在Node.js脚本中设置了聚合查询,如下所示:
TestResult.aggregate([
{ $match:
{
Probe: parseInt(fieldsToSearch.probe),
TimeStamp: {
"$gte" : fieldsToSearch.queryBeginTimeStamp ,
"$lt" : fieldsToSearch.queryEndTimeStamp
}
}
},
{ $group:
{
_id: "$Probe",
min : {
$min: "$Value"
},
max : {
$max: "$Value"
},
avg : {
$avg: "$Value"
}
}
},
{ $project:
{
probe:"$_id",
_id: 0,
min: 1,
max: 1,
avg: 1,
TimeStamp : 1//"$TimeStamp"
}
}])
但是,在上一个$ project阶段,我还要返回原来用于匹配记录的TimeStamp字段。但是,获得的结果没有TimeStamp字段。如何从早期阶段到最后一个项目阶段获取字段?
答案 0 :(得分:1)
您应该提供有关集合的更多信息,但是查看管道,您可能希望在组阶段中添加由2个字段组成的_id - probe和timestamp:
$group:
{
_id: {
Probe: "$Probe",
TimeStamp: "$TimeStamp"
},
min : {
$min: "$Value"
},
max : {
$max: "$Value"
},
avg : {
$avg: "$Value"
}
}
否则,您无法在管道中进一步获取时间戳字段。