You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条查询获取员工集合的首条与末条记录?

可以用单条查询语句获取第一条和最后一条员工记录

假设你使用的是MongoDB,以下是两种可行的单条查询方案:

方案一:用$facet拆分多管道查询

$facet能在一次聚合操作里同时执行多个独立的子管道,分别拿到第一条和最后一条数据:

db.employees.aggregate([
  {
    $facet: {
      firstRecord: [ { $limit: 1 } ],
      lastRecord: [ { $sort: { EmpId: -1 } }, { $limit: 1 } ]
    }
  }
])

这里通过EmpId倒序来定位最后一条记录,因为你的数据里EmpId是递增的。如果要依赖文档插入顺序,也可以用MongoDB默认生成的_id字段排序(_id包含时间戳信息)。

方案二:结合$group聚合获取

如果不想用$facet,也可以通过$group来聚合出首尾两条记录:

db.employees.aggregate([
  {
    $group: {
      _id: null,
      firstRecord: { $first: "$$ROOT" },
      lastRecord: { $last: "$$ROOT" }
    }
  },
  {
    $project: {
      _id: 0,
      firstRecord: 1,
      lastRecord: 1
    }
  }
])

注意:这个方法依赖集合的自然顺序(也就是文档插入的先后顺序)。如果集合有过更新、删除操作,自然顺序可能和预期不符,这时候建议先排序再聚合:

db.employees.aggregate([
  { $sort: { EmpId: 1 } },
  {
    $group: {
      _id: null,
      firstRecord: { $first: "$$ROOT" },
      lastRecord: { $last: "$$ROOT" }
    }
  },
  { $project: { _id: 0 } }
])

内容的提问来源于stack exchange,提问作者Anandhu MS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:15:44