【发布时间】:2021-12-07 07:42:15
【问题描述】:
假设我有这样的模型
class Band
include Mongoid::Document
embeds_many :albums
end
class Album
include Mongoid::Document
field :name, type: String
field :producer, type: String
embedded_in :band
end
我想要的是所有专辑都由“George Martin”制作的乐队。
我尝试了Band.where('albums.producer' => 'George Martin'),但它匹配所有制作人中至少有一次 George Martin 的乐队。
例子:
这个乐队应该匹配(因为他们所有的专辑都是由乔治·马丁制作的):
{
"_id" : ObjectId("blabla"),
"albums" : [
{
"_id" : ObjectId("4d3ed089fb60ab534684b7e0"),
"name" : "Violator",
"producer" : "George Martin"
}
]
}
这个乐队不应该匹配(因为专辑“+”已由另一位制作人制作):
{
"_id" : ObjectId("blablabla"),
"albums" : [
{
"_id" : ObjectId("album1"),
"name" : "/",
"producer" : "George Martin"
},
{
"_id" : ObjectId("album2"),
"name" : "+",
"producer" : "Another producer"
}
]
}
【问题讨论】: