我如何获得第一个和最后一个文档time
场地。
我可以用$group
并得到$first
and $last
文档,但我不需要在这里分组,只需获取第一个和最后一个完整文档。也许我可以用slice
?此查询不起作用:
{
"aggregate": "353469045637980_data",
"pipeline": [
{
"$match": {
"$and": [
{
"time": {
"$gte": 1461369600
}
},
{
"time": {
"$lt": 1461456000
}
}
]
}
},
{
"$project": {
"first": {
"$slice": 1
},
"last": {
"$slice": -1
}
}
}
]
}
那么你需要$group
但你可以简单地使用一个常量(例如null
, see the docs https://docs.mongodb.com/manual/reference/operator/aggregation/group/#pipe._S_group)为其id
这样就形成了一个组。$$ROOT https://docs.mongodb.com/manual/reference/aggregation-variables/#system-variables然后指的是您可以使用的文档本身$first
and $last
like so
$group: {
_id: null,
first: { $first: "$$ROOT" },
last: { $last: "$$ROOT" }
}
当然你可以进一步介绍$project
将数据整形为数组的阶段(正如您所提到的,您需要一个列表)等。
作为旁注,您可能想介绍一个$sort
阶段以确保$first
and $last
具有正确的意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)