【问题标题】:SharePoint CAML query - order of Where conditions giving different resultsSharePoint CAML 查询 - Where 条件给出不同结果的顺序
【发布时间】:2020-01-06 17:02:17
【问题描述】:

我在 SharePoint Online 中遇到问题,其中包含包含数千条记录的大型文档列表。对于某些视图,我收到通常的列表视图超过 5000 个项目的错误,因此我试图按日期字段过滤这些视图。我看到一些奇怪的结果会根据我的 where 条件的顺序发生变化。

当我按“事件日期”和“部门”字段排序时,查询成功。

<View Scope=\"RecursiveAll\">
<Query>
    <OrderBy Override='TRUE'><FieldRef Name='ID' /></OrderBy>
    <Where>
        <And>
            <Geq><FieldRef Name='Event_x0020_Date' /><Value Type='DateTime'>2019-01-01T00:00:00Z</Value></Geq>
            <Eq><FieldRef Name='Division' /><Value Type='Text'>{division}</Value></Eq>
        </And>
    </Where>
</Query>

当我执行完全相同的查询,但条件相反时,我收到一个错误,即视图超出了列表视图阈值。

<View Scope=\"RecursiveAll\">
<Query>
    <OrderBy Override='TRUE'><FieldRef Name='ID' /></OrderBy>
    <Where>
        <And>
            <Eq><FieldRef Name='Division' /><Value Type='Text'>{division}</Value></Eq>
            <Geq><FieldRef Name='Event_x0020_Date' /><Value Type='DateTime'>2019-01-01T00:00:00Z</Value></Geq>
        </And>
    </Where>
</Query>

在我看来,SharePoint 确定第一个条件已经超过 5000 个项目,而不会打扰第二个条件。我错过了什么吗?

【问题讨论】:

    标签: sharepoint office365 caml


    【解决方案1】:

    在 SharePoint 查询中,如果 first 过滤器返回超过 5000 个项目,您将达到 5000 个项目的阈值。在应用 AND 的第二个条件之前,将单独评估每个条件。

    如果您有超过 5000 个具有相同划分的项目,则不能将其用作第一个条件。但如果事件日期适用于少于 5000 个项目,您可以将其用作第一个条件,然后使用 AND 添加除法条件。

    所以,是的,条件的顺序确实很重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      相关资源
      最近更新 更多