计数> 0 mongoid标准

时间:2012-10-16 15:58:58

标签: ruby-on-rails ruby ruby-on-rails-3 mongoid

Class User
has_many :gifts
end

Class Gift
belongs_to :user
end

我想查找一个或多个用户是否有一个或多个礼物:

User.any_of(gift: > 0).count

如何正确查询?

谢谢

2 个答案:

答案 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) 我想你可以从这里拿走它。