MongoDB 获取聚合查询中的第一个和最后一个文档

2024-05-11

我如何获得第一个和最后一个文档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(使用前将#替换为@)

MongoDB 获取聚合查询中的第一个和最后一个文档 的相关文章

随机推荐