1
Class User
has_many :gifts
end

Class Gift
belongs_to :user
end

1 人以上のユーザーが次のような 1 つ以上のギフトを持っているかどうかを調べたい:

User.any_of(gift: > 0).count

正しいクエリはどうですか?

ありがとうございました

4

2 に答える 2

0

map-reduce のみの IMHO:


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 に答える