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

MongoDB查询:如何仅投影数组的第一个指定元素?

搞定这个MongoDB投影问题的正确姿势

我明白你要的是只返回匹配条件的文档里,指定数组的第一个元素,其他所有字段(包括默认的_id)都不显示。咱们一步步来解决:

正确的查询语句

直接用这个就能达到你要的效果:

db.students.find(
  { 'personal.given_names.0': 'Trent' },
  { 
    '_id': 0,  // 必须显式排除默认会返回的_id
    'personal.given_names': { $slice: 1 }
  }
)

执行后返回的结果会是这样的,完全符合你的需求:

{ "personal" : { "given_names" : [ "Trent" ] } }

为什么你之前的尝试没成功?

咱们来拆解下你踩过的坑:

  • 只写{ 'personal.given_names': { $slice: 1 } }时,MongoDB默认会保留_id,而且不会自动隐藏其他字段(比如personal.gender、enrollments这些),所以才会带出一堆你不需要的内容。
  • 你试的'personal.given_names': [1, { $slice: 1 }]这种写法是无效的——MongoDB不允许对同一个字段同时指定“包含”(1)和操作符(比如$slice),后者会覆盖前者,而且语法本身就不被支持。
  • 用'personal.given_names.0': 1的话,虽然能拿到第一个元素,但它会把元素拆成单独的键(比如"personal.given_names.0": "Trent"),而不是保留原数组结构只取第一个元素,格式上不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:24:54