Ruby on rails 按数组长度的Mongoid顺序

Ruby on rails 按数组长度的Mongoid顺序,ruby-on-rails,mongodb,sorting,mongoid,Ruby On Rails,Mongodb,Sorting,Mongoid,如何根据数组的长度对Mongoid模型进行排序,数组是模型中的一个字段 在ruby中,可以对数组进行如下排序: my_array.sort_by(&:my_attr) my_array.sort_by{|element| element.my_attr } 它将根据数组中每个元素的属性对数组进行排序 你也可以这样写: my_array.sort_by(&:my_attr) my_array.sort_by{|element| element.my_attr } 这是完全相

如何根据数组的长度对Mongoid模型进行排序,数组是模型中的一个字段


在ruby中,可以对数组进行如下排序:

my_array.sort_by(&:my_attr)
my_array.sort_by{|element| element.my_attr }
它将根据数组中每个元素的属性对数组进行排序

你也可以这样写:

my_array.sort_by(&:my_attr)
my_array.sort_by{|element| element.my_attr }
这是完全相同的,它将按照每个元素的
my_attr
属性进行排序。第二种语法适用于需要比每个元素的方法结果更复杂的排序条件的情况


文档:

在ruby中,可以对数组进行如下排序:

my_array.sort_by(&:my_attr)
my_array.sort_by{|element| element.my_attr }
它将根据数组中每个元素的属性对数组进行排序

你也可以这样写:

my_array.sort_by(&:my_attr)
my_array.sort_by{|element| element.my_attr }
这是完全相同的,它将按照每个元素的
my_attr
属性进行排序。第二种语法适用于需要比每个元素的方法结果更复杂的排序条件的情况

文档:

Mongo文档:

不能使用$size查找大小范围(例如:数组) 包含多个元素)。如果需要查询范围,请创建 添加元素时增加的额外大小字段。索引 不能用于查询的$size部分,尽管 查询表达式包含在索引中,索引可用于搜索 匹配查询表达式的该部分

因此,我们无法使用mongo的
$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
end
按大小排序
帖子

Post.order_by(likes_size: :desc)
Mongo文件:

不能使用$size查找大小范围(例如:数组) 包含多个元素)。如果需要查询范围,请创建 添加元素时增加的额外大小字段。索引 不能用于查询的$size部分,尽管 查询表达式包含在索引中,索引可用于搜索 匹配查询表达式的该部分

因此,我们无法使用mongo的
$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
end
按大小排序
帖子

Post.order_by(likes_size: :desc)

文档说明您不能使用大小进行订购


尝试添加一个包含size值的新列,并对其进行排序,该列将作为orderby使用。

文档说明不能使用size进行排序


尝试添加一个包含size值的新列,并对其进行排序,这将作为排序依据。

这如何适用于该问题?OP在MongoDB中有一个数组字段,他们希望根据该数组的长度对MongoDB集合进行排序。我希望根据模型中的字段及其数组对集合进行排序。因为eg Post是模型,“likes”是字段,它是一个用户id数组。所以我想根据likes数组的长度对Post进行排序@这正是我想要的。这个问题如何适用?OP在MongoDB中有一个数组字段,他们希望根据该数组的长度对MongoDB集合进行排序。我希望根据模型中的字段及其数组对集合进行排序。因为eg Post是模型,“likes”是字段,它是一个用户id数组。所以我想根据likes数组的长度对Post进行排序@这正是我想要的。我想根据模型中的字段及其数组对集合进行排序。因为eg Post是模型,“likes”是一个用户id数组的字段。所以我想根据likes数组的长度对Post进行排序。谢谢,还有一个简单的问题,我有Postactivity,它是一个以Post_id作为外键(有一个关系)的模型,这个模型有likes数组。现在我如何对Post模型进行排序。提前感谢…非常感谢您的时间。@BalajiThiru您能否创建一个包含所有细节的新问题。我会尽力提供帮助。我想根据模型中的字段及其数组对集合进行排序。因为eg Post是模型,“likes”是一个用户id数组的字段。所以我想根据likes数组的长度对Post进行排序。谢谢,还有一个简单的问题,我有Postactivity,它是一个以Post_id作为外键(有一个关系)的模型,这个模型有likes数组。现在我如何对Post模型进行排序。提前感谢…非常感谢您的时间。@BalajiThiru您能否创建一个包含所有细节的新问题。我会尽力帮忙的。