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

MongoDB计算年份差值,筛选符合条件的红葡萄酒查询求助

MongoDB查询解决方案:筛选符合条件的红葡萄酒并按评分排序

需求对应实现

要筛选红葡萄酒、陈酿时长≥20年,同时按评分排序,直接用聚合框架的$match+$sort就能搞定,核心是用$expr实现字段间的计算判断:

完整查询代码

db.wines.aggregate([
  // 第一步:筛选红葡萄酒且陈酿≥20年
  {
    $match: {
      wineType: "Red",
      $expr: {
        $gte: [{$subtract: ["$endYear", "$startYear"]}, 20]
      }
    }
  },
  // 第二步:按rating排序(-1是降序,1是升序)
  {
    $sort: { rating: -1 }
  }
])

关键细节说明

  • $expr是核心:它允许在$match里用聚合表达式计算字段差值,$subtract算出endYear减startYear的结果,再用$gte判断是否≥20
  • 不需要额外$project:默认会返回匹配文档的所有字段,要是只需要特定字段,加个$project阶段就行,比如:
    {
      $project: {
        _id: 1,
        wineType: 1,
        Brand: 1,
        startYear: 1,
        endYear: 1,
        rating: 1
      }
    }
    
    把这段放在$match和$sort中间即可。
  • 集合名替换:记得把db.wines里的wines换成你实际的集合名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:45:27