Class User
has_many :gifts
end
Class Gift
belongs_to :user
end
我想查找一个或多个用户是否有一个或多个礼物:
User.any_of(gift: > 0).count
如何正确查询?
谢谢
答案 0 :(得分:0)
如果嵌入文档
User.any_of(:gifts.exists => true)
可以解决蓝色问题
如果不是嵌入文件
Perhap我认为你需要执行类似这样的事情
users_has_gifts = User.includes(:receivers).map { |user|
user if user.receivers.exits?
}
答案 1 :(得分:0)
恕我直言,只有map-reduce:
mapper = %{
function() { emit(this.user_id, 1) }
}
reducer = %{
function(k, vals) {
var sum = 0;
vals.forEach(function(val) {
sum += val;
});
return sum;
}
}
Gift.collection.map_reduce(mapper, reducer, out: {inline: 1}, raw: true)
然后你可以查看结果并选择你喜欢的结果。 如果您有大型集合,并且您不希望它们以内联方式返回,那么您可以使用:{replace:'collection_name'},然后您甚至可以链接选择器,例如: .where(value.gte => 2).limit(10) 我想你可以从这里拿走它。