【问题标题】:How to sort an array of mongoid documents (array contains different mongoid document types)?如何对 mongoid 文档数组进行排序(数组包含不同的 mongoid 文档类型)?
【发布时间】:2013-05-26 13:18:36
【问题描述】:

我有两个 Mongoid 文档数组,FirstType 文档和 SecondType 文档。两者都嵌入在User

user.first_types  =  [#<FirstType _id: 51a10b4883c336ebef0002a8, created_at: 2013-05-25 19:04:40 UTC, updated_at: 2013-05-25 19:04:40 UTC, datetime: 2013-03-28 15:03:22 UTC, text: "Hello 1">]
user.second_types = [#<SecondType _id: 51a6058783c3368a62000003, created_at: 2013-05-29 13:41:27 UTC, updated_at: 2013-05-29 13:41:27 UTC, datetime: 2013-05-29 08:23:27 UTC, text: "Hello 2">]

然后我将它们与这行代码合并:

all_types = user.first_types+user.second_types

我现在希望按属性datetime 对all_types 数组进行排序(最新的datetime 优先,所以SecondType 对象应该是第一个)。

我尝试过传统的 Mongoid 和 Ruby 数组方法,但是当我混合 Mongoid 文档时,它们似乎不起作用。有什么想法吗?

【问题讨论】:

    标签: ruby arrays mongodb sorting mongoid


    【解决方案1】:

    使用Enumerable#sort_by,取反“datetime”属性的数值降序:

    all_types.sort_by { |x| -x.datetime.to_f }
    

    【讨论】:

    • 为什么-x.datetime.to_f不仅仅是x.datetime? ?
    • @RubyLovely:用于降序“最新日期时间优先”。
    • 为什么不all_types.sort_by { |x| x.datetime }.reverse
    • @RubyLovely:因为按所需方向排序会更快。
    • @RubyLovely:当然,任何人都可以。例如,你可以! =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多