如何根据数组的长度对Mongoid模型进行排序,数组是模型中的一个字段。
发布于 2016-09-23 22:26:14
文档中说,您不能通过使用大小来订购。
尝试添加一个包含大小值的新列,并对其进行排序,该列将以order的方式工作。
发布于 2016-07-14 09:00:47
Mongo文档他说
您无法使用$size找到一个大小范围(例如:具有多个元素的数组)。如果需要查询范围,请创建一个额外的大小字段,在添加元素时增加该字段。索引不能用于查询的$size部分,尽管如果包含其他查询表达式,则可以使用索引在查询表达式的该部分上搜索匹配项。
所以我们不能用芒果的$size来点菜。
您可以通过添加新字段来解决任务,该字段将存储数组大小。
class Post
include Mongoid::Document
field :likes, type: Array, default: []
field :likes_size, type: Integer
before_save do
self.likes_size = likes.size
end
endposts按likes_size排序
Post.order_by(likes_size: :desc)发布于 2016-07-13 13:30:38
在ruby中,可以像这样对数组进行排序:
my_array.sort_by(&:my_attr)它将根据数组中每个元素的属性my_array对数组my_attr进行排序。
你也可以这样写:
my_array.sort_by{|element| element.my_attr }这完全相同,它将根据每个元素的my_attr属性进行排序。第二种语法用于当您想要一个比每个元素的方法更复杂的排序条件时。
文档:通过
https://stackoverflow.com/questions/38350192
复制相似问题