0

我不知道如何在 id 字段(例如 created 或 lastModified )上使用 $orderby 和 SODA。我直接将 SODA 用于 REST 而不是其他项目。

排序语法是:

{
  $orderby: {
    path: 'created',
    datatype: 'date',
    order: 'desc'
  }
}

我也试过:

{
    "$orderby": {
        "$fields": [{
                
            "path": "created",
            "datatype": "date",
            "order": "desc"
        }],
        "$scalarRequired": true
    }
}

并用 $id: 'created' 替换路径(因为您可以在过滤器规范中使用它来访问非文档元数据。但是没有任何东西可以正确订购。

在创建对象时没有将创建的字段放入我的对象中(这违背了拥有这些字段的目的)如何在元数据字段上使用 orderby?

4

1 回答 1

0

来自 SODA 开发团队的 Max。我不是 100% 确定您所说的“id 字段”是什么意思。看起来您的意思是由 SODA 自动维护的“创建于”和“最后修改”的文档组件,对吧?如果是这样,我们不支持这些上的 orderbys(尽管它可以作为增强添加)。

到目前为止,正如您在帖子中提到的,最好的选择是在 JSON 文档的内容中创建一个字段并将其设置为 ISO8601 格式的时间戳值(例如 2020-10-13T07:01:01)。然后,您可以对这样的字段进行排序(数据类型为“日期时间”)。如果需要更多详细信息,请告诉我。

在 SODA REST 中,当您列出集合内容时,您可以指定 since=timestamp 和 until=timestamp 查询参数。这将为您提供最后修改时间戳大于“自”一个且小于或等于“直到”一个的所有文档。

例子:

http://host:port/ords/scott/soda/latest/myColl? =2020:01:01T00:00:00&直到=2021:01:01T00:00:00

作为此操作的一部分,SODA 自动在“最后修改”上添加 orderby。不确定这是否对您有用,因为这只是为了列出集合中的所有文档(例如,您不能将它与 QBE 结合使用)。因此,如果这不能满足您的需求,现在最好的选择是在文档内容中显式添加“修改”字段之类的内容,然后对其进行排序。

于 2020-10-13T09:34:59.373 回答