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

Mongoid如何查询所有嵌入Album文档producer均为指定值的Band记录

正确查询方案

你可以通过反向排除逻辑实现需求:筛选出不存在任何一张专辑的producer不等于"George Martin"的乐队即可,对应的Mongoid查询语句如下:

Band.where.not('albums' => { :$elemMatch => { producer: { :$ne => 'George Martin' } } })

原理解释

  • $elemMatch 用于匹配数组中满足指定条件的元素
  • producer: { $ne: 'George Martin' } 规则匹配所有制作人不是George Martin的专辑
  • 外层嵌套where.not后,就可以排除所有存在不符合要求专辑的乐队,剩余结果就是所有专辑制作人都为George Martin的乐队

可选补充

如果你不需要将没有专辑的乐队纳入结果,可以额外加条件过滤空数组:

Band.where.not('albums' => { :$elemMatch => { producer: { :$ne => 'George Martin' } } })
    .where(:albums.nin => [[], nil])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:54:01