1
Class User
has_many :gifts
end

Class Gift
belongs_to :user
end

我想知道一位或多位用户是否有一件或多件礼物,例如:

User.any_of(gift: > 0).count

正确的查询如何?

谢谢

4

2 回答 2

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)

然后您可以查看结果并选择您喜欢的结果。如果你有很大的集合,并且你不希望它们被内联返回,那么你可以使用 out: {replace: 'collection_name'},然后你甚至可以链接选择器,比如:.where(value.gte = > 2).limit(10) 我认为你可以从这里拿走。

于 2012-10-17T22:35:48.210 回答
0

如果嵌入文档

User.any_of(:gifts.exists => true)

会出人意料的

如果不是嵌入文档

也许我认为你需要执行这样的事情

users_has_gifts = User.includes(:receivers).map { |user| 
  user if user.receivers.exits?
}
于 2012-10-16T16:59:19.370 回答