如何使用MongoMapper查询不同?我的查询是:与MongoMapper查询不同
subscribedToThread = Comment.where(:subscribe_thread => 1).all
但是,这将返回许多对象具有相同user_id
。我需要返回一个不同的user_id
。这可能吗?
如何使用MongoMapper查询不同?我的查询是:与MongoMapper查询不同
subscribedToThread = Comment.where(:subscribe_thread => 1).all
但是,这将返回许多对象具有相同user_id
。我需要返回一个不同的user_id
。这可能吗?
我认为你需要下载到红宝石驱动程序为了做到这一点,因为我不认为你可以用MongoMapper本身做到这一点:
subscribedToThread = Comment.collection.distinct("user_id", {:subscribe_thread => 1})
调用模型上的收集方法返回正如本Ruby驱动程序直接提供的,所以你可以使用下面的语法发出不同的查询集合:
collection.distinct(key, query = nil)
你可以阅读更多关于它here
是的,你可以这样做:
subscribedToThread = Comment.where(:subscribe_thread => 1).fields(:user_id).all.compact!.unique!
这将为零各个领域,但user_ID的,你那么uniq!
,即删除所有双打,然后compact!
所有零
http://mongomapper.com/documentation/plugins/querying.html#fields
试试这个
subscribedToThread = Comment.where(:subscribe_thread => 1).fields(:user_id).collect(&:user_id).uniq
它会笑w你的uniq用户列表user_id
这样做后取得评论的所有作者后红宝石侧执行区分操作。因此,对于具有许多不具有唯一值的对象的集合(在这种情况下,由多个用户创建的大量注释集合)将不会有效。 – 2014-04-17 09:55:31