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

MongoDB聚合查询添加$sort后birth_date字段不显示的问题求助

解决MongoDB聚合管道排序后birth_date字段不显示的问题

你遇到的问题是嵌套字段排序引发的潜在异常导致的,把crew对象提升为顶层文档即可解决,同时让管道逻辑更清晰。

修正后的聚合管道如下:

db.movie.aggregate([
    {"$unwind": "$crew"},
    {"$replaceRoot": { "newRoot": "$crew" }},
    {"$match": {"death_date": {"$exists": false}}},
    {"$project": {"give_name": 1, "birth_date": 1}},
    {"$sort": {"birth_date": 1}}
])

关键修改说明:

  • 用$replaceRoot把unwind后的crew嵌套对象转为顶层文档,后续操作直接针对顶层字段,避开了嵌套路径访问的潜在问题
  • 后续的$match、$project、$sort都直接使用death_date、birth_date等顶层字段,无需再加crew.前缀

如果部分crew成员本身没有birth_date字段,你可以在$match阶段额外添加过滤条件,确保只返回有生日记录的在世成员:

db.movie.aggregate([
    {"$unwind": "$crew"},
    {"$replaceRoot": { "newRoot": "$crew" }},
    {"$match": {
        "death_date": {"$exists": false},
        "birth_date": {"$exists": true}
    }},
    {"$project": {"give_name": 1, "birth_date": 1}},
    {"$sort": {"birth_date": 1}}
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:01:17