从最终项目阶段的匹配阶段返回一个字段

时间:2015-09-29 19:54:57

标签: node.js mongodb aggregation-framework

我使用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字段。如何从早期阶段到最后一个项目阶段获取字段?

1 个答案:

答案 0 :(得分:1)

您应该提供有关集合的更多信息,但是查看管道,您可能希望在组阶段中添加由2个字段组成的_id - probe和timestamp:

$group:
{
    _id: {
        Probe: "$Probe",
        TimeStamp: "$TimeStamp"
    },
    min : {
        $min: "$Value"
    },
    max : {
        $max: "$Value"
    },
    avg : {
        $avg: "$Value"
    }
}

否则,您无法在管道中进一步获取时间戳字段。