解析 orQueries 的限制

Parse limits on orQueries

我很难找到任何关于 Parse 的文档来回答我的问题。这是我需要的示例。

let colorQuery1 = PFQuery(classname: "colors")
colorQuery1.whereKey("color", equalTo: red)

let colorQuery2 = PFQuery(classname: "colors")
colorQuery2.whereKey("color", equalTo: blue)

let colorQuery3 = PFQuery(classname: "colors")
colorQuery3.whereKey("color", equalTo: green)

let mainColorQuery = PFQuery.orQueryWithSubqueries([colorQuery1, colorQuery2, colorQuery3])
mainColorQuery.findObjectsInBackgroundWithBlock {
(objects, error) -> Void in
// retrieve data
}

我的问题是我想从前两个查询中检索大约 15 个项目,然后从最后一个查询中检索大约 150 个项目。这是不允许的,因为我无法对子查询设置限制。我也很想知道这种情况下查询的默认限制。在我提供的示例中,如果有 1000 个红色对象,mainQuery return 是否只有 100 或 1000 个红色对象,然后第二个和第三个查询将留空?请帮我想办法限制子查询。

所有查询的默认限制为 100,最大限制为 1000。对多个结果进行 OR'ing 以产生大于 1k 的结果将生成 1k 的子集(我认为)与查询传递的顺序相关。

但在您的情况下,您可以通过将 OR 查询替换为使用 containedIn 指定析取的单个查询来获得更多控制...

let colors = ["red", "blue", "green"]
query.whereKey("color", containedIn: colors)
query.limit = 1000  // still the max

对于这个单一的查询,您可以添加额外的约束来限制结果计数,and/or重复执行它并跳到超过 1k 个结果的页面。