2012-10-16 65 views
1
Class User 
has_many :gifts 
end 

Class Gift 
belongs_to :user 
end 

我想找到,如果一個或多個用戶有一個或更多的禮物是這樣的:計數> 0 mongoid標準

User.any_of(gift: > 0).count 

如何纔是正確的查詢?

謝謝

+0

@cdesrosiers加入MongoDB – Viren

+0

加入mongoid? :S – hyperrjas

+0

也許你需要在用戶模型中嵌入禮物然後它可以工作 – Viren

回答

0

如果嵌入文檔

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

會制定出藍色

如果不是的嵌入文檔

Perhap我想你需要這樣的

執行的東西
users_has_gifts = User.includes(:receivers).map { |user| 
    user if user.receivers.exits? 
} 
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) 我認爲你可以從這裏拿走它。