按ArangoDB中的对象属性排序

时间:2016-12-15 10:36:31

标签: python arangodb aql

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

像这样:

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"""

除了我能提出的所有其他组合。

1 个答案:

答案 0 :(得分:0)

键值对象无法真正排序, 如果您想按键排序,可以执行以下操作:

原始对象:

{
  "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
    }
  }
]