Mic*_*zuk 6 mongodb mongodb-query aggregation-framework mongodb-aggregation
如何根据time字段获取第一个和最后一个文档.我可以使用$group和获取$first并$last记录,但我不需要在这里分组,只需获得第一个和最后一个完整的文档.也许我可以使用slice?此查询不起作用:
{
"aggregate": "353469045637980_data",
"pipeline": [
{
"$match": {
"$and": [
{
"time": {
"$gte": 1461369600
}
},
{
"time": {
"$lt": 1461456000
}
}
]
}
},
{
"$project": {
"first": {
"$slice": 1
},
"last": {
"$slice": -1
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
DAX*_*lic 18
嗯,你需要$group但你可以简单地使用一个常量(例如null,参见文档),id以便它产生一个单独的组.$$ ROOT然后引用您可以使用的文档本身,$first并且$last像这样
$group: {
_id: null,
first: { $first: "$$ROOT" },
last: { $last: "$$ROOT" }
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以引入更多$project阶段来将数据整形为一个数组(如您所提到的,您想要一个列表)等.
作为旁注,您可能想要引入一个$sort阶段来确保$first并$last具有正确的含义.
| 归档时间: |
|
| 查看次数: |
5518 次 |
| 最近记录: |