【问题标题】:Sort by Object Attributes in ArangoDB在 ArangoDB 中按对象属性排序
【发布时间】:2016-12-15 10:36:30
【问题描述】:

我有一个由对象组成的集合,由一个整数/字符串作为键/属性和一些值组成。

像这样:

results
-> '1' : 231.034
-> '2' : 3267.123
-> '3' : 235.23

当我写作时:

"""FOR u IN collection
RETURN u.results"""

我按照这样的随机顺序得到它们,

[{'3' : 235.23, '1' : 231.034, '2' : 3267.123}]

如何根据属性对它们进行排序?

我试过了:

"""FOR u IN collection
SORT ATTRIBUTES(u.results) ASC
RETURN u.results"""

以及我能想到的所有其他组合。

【问题讨论】:

    标签: python arangodb aql


    【解决方案1】:

    键值对象不能真正排序, 如果要按键排序,可以执行以下操作:

    原始对象:

    {
      "results": {
        "3": 235.23,
        "2": 3267.123,
        "1": 231.034
      }
    }
    

    查询:

    for u in @@collection
        let keys = ATTRIBUTES(u.results)
        //convert keys to sorted array
        let sortedKeys = (for key in keys
            sort key asc
            return key
        )
    
        //convert to key value tuples
        let sortedObject = (
            for key in sortedKeys
                return {[key] : u.results[key]}
        )
    
        //merge to single document, can also do with zip
        return {results : MERGE(sortedObject)}
    

    输出:

    [
      {
        "results": {
          "1": 231.034,
          "2": 3267.123,
          "3": 235.23
        }
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      相关资源
      最近更新 更多