在使用Tina的内容API进行查询功能时,需要注意一些限制:
目前不支持某些过滤操作:
OR
操作组合条件NOT
操作否定条件exists
操作数值(在过滤器和索引文档中)目前被填充为4位,以提供正确的排序。例如,字段值 10
将被转换为 0010
。因此,数值大于 9999
可能会导致意外行为。
在使用索引以提高查询性能时,需要注意几个已知的限制。
即使字段上的索引与查询过滤器的字段匹配,使用 IN
操作符总是会导致对集合的非索引全扫描。这是因为无法构建一个具有起始和结束值的单一范围来覆盖该条件。
集合中类型为 object
的字段在索引时总是被忽略。因此,该对象内的字段不能用于排序。这一限制并不妨碍使用嵌套对象字段进行结果过滤,只是不能在这些字段上进行排序。
多字段索引可能无法使用,具体取决于 filter
参数和索引定义中的字段顺序。为了构建一个索引查询,必须能够解析一个具有起始和结束标准的单一范围,以覆盖集合的一个子集。
例如,如果查询的过滤器在一个字段上指定了一个范围条件(即 gt
),而在另一个字段上指定了另一个范围条件,那么就无法构建一个覆盖这两个条件的单一连续范围。当使用这样的过滤器时,必须扫描整个集合以提供一致的排序和分页。
因此,在定义多字段索引时,离散值字段(boolean
或 string
)应在任何连续值字段(如 datetime
或 numeric
类型)之前排序。这显然受到用例和所需排序顺序的限制,但在考虑查询性能时需要牢记这一点。