Oracle SODA-如何对使用REST创建的内容进行排序?

问题描述

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

排序语法为:

Solution.java:34: error: cannot find symbol
        Iterator itr=m1.iterator();
                       ^
  symbol:   method iterator()
  location: variable m1 of type Map<Character,Integer>
1 error

我也尝试过:

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

然后将路径替换为$ id:'created'(因为您可以在过滤器规范中使用该路径来访问非文档元数据。但是,不能正确地进行排序。

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

解决方法

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

到目前为止,就像您在帖子中提到的那样,最好的选择是在JSON文档的内容中创建一个字段,并将其设置为ISO8601格式的时间戳值(例如2020-10-13T07:01:01)。然后,您可以在此类字段(数据类型为“ datetime”)上进行订购。请让我知道是否需要更多详细信息。

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

示例:

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

作为此操作的一部分,SODA会在“上次修改”时自动添加一个orderby。不过,不确定这是否对您有用,因为这仅是列出集合中的所有文档(例如,您不能将其与QBE结合使用)。因此,如果这不能满足您的需求,那么目前最好的选择是在文档内容中明确添加类似“修改”字段的内容,然后对此进行排序。