首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按阵列长度排列的Mongoid顺序

问按阵列长度排列的Mongoid顺序
EN

Stack Overflow用户
提问于 2016-07-13 11:17:50
回答 3查看 757关注 0票数 0

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-23 22:26:14

文档中说,您不能通过使用大小来订购。

尝试添加一个包含大小值的新列,并对其进行排序,该列将以order的方式工作。

票数 1
EN

Stack Overflow用户

发布于 2016-07-14 09:00:47

Mongo文档他说

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

所以我们不能用芒果的$size来点菜。

您可以通过添加新字段来解决任务,该字段将存储数组大小。

代码语言:javascript
复制
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

posts按likes_size排序

代码语言:javascript
复制
Post.order_by(likes_size: :desc)
票数 2
EN

Stack Overflow用户

发布于 2016-07-13 13:30:38

在ruby中,可以像这样对数组进行排序:

代码语言:javascript
复制
my_array.sort_by(&:my_attr)

它将根据数组中每个元素的属性my_array对数组my_attr进行排序。

你也可以这样写:

代码语言:javascript
复制
my_array.sort_by{|element| element.my_attr }

这完全相同,它将根据每个元素的my_attr属性进行排序。第二种语法用于当您想要一个比每个元素的方法更复杂的排序条件时。

文档:通过

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38350192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档