使用Mongoid获取具有最大字段值的对象。

6
有没有一种方法可以从 Method 中返回对象而不是值?
Mongoid::Contexts::Enumerable#max

链接到rdoc

一个简单的例子是,如果您有一组用户,并且他们都有字段:age => 我能用max获取最年长的用户吗,还是应该使用其他东西?

1个回答

14
one_of_oldest_users = User.desc(:age).limit(1).first

这将会得到年龄最大的一个用户(如果有多个),如果你想获得所有这些用户,最简单的方法是使用两次遍历。

max_age = User.max(:age)
oldest_users = User.where(age: max_age)

# or, if you like one-liners
oldest_users = User.where(age: User.max(:age))
为了使这些查询更有效率,当然需要在:age上建立索引。

如果最大年龄是23岁,并且有五个人都是这个年龄,那么这种方法就会失败。 - mu is too short
那么唯一的方法就是对整个集合进行排序吗? - Todor Grudev
@muistooshort:好的,问题标题中说“the object”。这有点暗示只有一个 :) - Sergio Tulentsev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接