2012-02-01 142 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