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

MongoDB筛选排除指定userid的评论并按日期降序排序问题

解决MongoDB筛选指定影片排除特定用户评论的问题

你可以通过$filter配合$sortArray实现需求,以下是两种可行写法:

方法一:使用聚合管道

db.films.aggregate([
  // 匹配目标影片
  { $match: { _id: ObjectId('64d69473da87c0c91ae7c596') } },
  // 过滤评论并排序
  {
    $project: {
      title: 1,
      reviews: {
        $sortArray: {
          input: {
            $filter: {
              input: "$reviews",
              cond: { $ne: ["$$this.userid", ObjectId('要排除的用户ID')] }
            }
          },
          sortBy: { creationdate: -1 }
        }
      }
    }
  }
])

方法二:在findOne中直接实现

db.films.findOne(
  { _id: ObjectId('64d69473da87c0c91ae7c596') },
  {
    title: 1,
    reviews: {
      $sortArray: {
        input: {
          $filter: {
            input: "$reviews",
            cond: { $ne: ["$$this.userid", ObjectId('要排除的用户ID')] }
          }
        },
        sortBy: { creationdate: -1 }
      }
    }
  }
)

关键说明

  • $filter用于遍历reviews数组,保留userid不等于指定值的评论元素,$$this代表数组中的当前元素
  • 先通过$filter完成筛选,再用$sortArray对筛选后的数组按creationdate降序排列
  • 替换代码中的ObjectId('要排除的用户ID')为实际需要排除的用户ID即可

内容的提问来源于stack exchange,提问作者D. Rattansingh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 22:15:10