使用MongoMapper查询不同的内容

时间:2012-02-01 15:36:04

标签: ruby-on-rails-3 mongodb mongomapper

如何使用MongoMapper查询 distinct ?我的疑问是:

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

但是这会返回许多具有相同user_id的对象。我需要返回一个不同的user_id。这可能吗?

3 个答案:

答案 0 :(得分:7)

我认为您需要下载到ruby驱动程序才能执行此操作,因为我认为您无法使用MongoMapper本身执行此操作:

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

在模型上调用集合方法会返回Ruby驱动程序直接提供的集合,因此您可以使用以下语法发出不同的查询:

collection.distinct(key, query = nil)

您可以阅读更多相关信息here

答案 1 :(得分:2)

是的,你可以这样做:

subscribedToThread = Comment.where(:subscribe_thread => 1).fields(:user_id).all.compact!.unique!

除了uniq!之后,你将删除所有双打,然后compact!所有nil

http://mongomapper.com/documentation/plugins/querying.html#fields

答案 2 :(得分:1)

试试这个

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

它将显示uniq user_id的列表