2012-02-01 145 views
2

如何使用MongoMapper查詢不同?我的查詢是:與MongoMapper查詢不同

subscribedToThread = Comment.where(:subscribe_thread => 1).all

但是,這將返回許多對象具有相同user_id。我需要返回一個不同的user_id。這可能嗎?

回答

7

我認爲你需要下載到紅寶石驅動程序爲了做到這一點,因爲我不認爲你可以用MongoMapper本身做到這一點:

subscribedToThread = Comment.collection.distinct("user_id", {:subscribe_thread => 1}) 

調用模型上的收集方法返回正如本Ruby驅動程序直接提供的,所以你可以使用下面的語法發出不同的查詢集合:

collection.distinct(key, query = nil)

你可以閱讀更多關於它here

1

試試這個

subscribedToThread = Comment.where(:subscribe_thread => 1).fields(:user_id).collect(&:user_id).uniq 

它會笑w你的uniq用戶列表user_id

+1

這樣做後取得評論的所有作者後紅寶石側執行區分操作。因此,對於具有許多不具有唯一值的對象的集合(在這種情況下,由多個用戶創建的大量註釋集合)將不會有效。 – 2014-04-17 09:55:31