RestHeart聚合:如何对结果进行排序?

时间:2017-05-05 14:00:45

标签: restheart

我在RESTHeart中有一个聚合管道。如何对结果进行排序?

在正常的RESTHeart查询中,我们可以使用?sort_by查询参数。但是,在聚合查询中将其添加到URL时,似乎不符合排序。

另一种选择是在聚合查询的元数据中添加排序字段 - 例如:

            {
                "_$sort" : {
                    "submittedAt" : -1
                }
            }, 

...对于如上所述的静态指定字段,它可以正常工作。但我希望sortField可以更改(如avar)并在查询变量中指定。在这种情况下,我还没有找到使用avars的方法。可以使用avars指定排序方向:

                "_$sort" : {
                    "submittedAt" : {
                        "_$var" : "dir"
                    }
                }

...但是如何在REST请求中动态指定密钥?

汤姆

1 个答案:

答案 0 :(得分:0)

您可以通过 avars 查询参数

传递变量
 GET /db/coll/_aggrs/test_ap?avars={"dir":1}

有关更多信息,请参阅文档aggregation section

avars 可以是任何json,唯一的限制是你不能传递运算符以避免查询注入。因此,如果您想传递排序键,您可以:

聚合

{ "$sort" : { "$var": "sortExpr" } } }

查询

 GET /db/coll/_aggrs/test_ap?avars={"sortExpr":{"submittedAt": 1}}

注意,自restheart 3.0起,不再需要运营商的_前缀。