在 Azure Boards 和 Azure DevOps 中按标题、ID 和格式文本字段进行查询

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

如果要基于关键字或短语或 null 文本字段查找工作项,可以通过筛选单行文本(字符串)、多行文本(纯文本)以及文本格式 (HTML) 字段来执行此操作。 如果发现查询返回结果的时间过长,请参阅创建查询/最佳做法

支持的运算符和宏

指定文本或格式文本字段的查询子句可以使用下表中列出的运算符和宏。


Data type

支持的运算符和宏


格式文本 (HTML)
多行文本字符串(纯文本)

Contains WordsDoes Not Contain WordsIs Empty1Is Not Empty1


单一文本(字符串)

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Does Not Contain, In, Not In, In Group, Not In Group, Was Ever[Any] 对“工作项类型”字段有效,@Project2 对“团队项目”字段有效。


ID

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], In, Not In, Was Ever@Follows@MyRecentActivity@RecentMentions@RecentProjectActivity 对“ID”字段有效InNot In 运算符 @Project2 对“团队项目”字段有效。


“状态”和“工作项类型”字段

= , <> , > , < , >= , <= , =[Field], <>[Field], >[Field], <[Field], >=[Field], <=[Field], Contains, Does Not Contain, In, Not In, In Group, Not In Group, Was Ever **Macros**:[Any]` 对这两个字段都有效。


注意

  1. Azure DevOps Server 2019 RC2 及更高版本支持 Is EmptyIs Not Empty 运算符
  2. 系统自动默认为基于当前项目进行筛选。 有关详细信息,请参阅跨项目查询

Contains words 用于字符串匹配

如果要筛选字符串匹配项,请尝试使用 Contains Words 运算符而不是 ContainsContains Words 运算符对指定的字段运行全文搜索,这在大多数情况下速度更快。 文本字符串长度限制在 100 个字符以内。

Contains 运算符运行表扫描时,不仅速度更慢,而且会消耗更多的 CPU 周期。 这些 CPU 周期导致资源消耗速率限制。

注意

Contains Words 运算符利用 SQL 的 全文搜索索引。 将新值保存到长文本字段时,SQL Server 会:

  • 将短语拆分为单个单词
  • 删除不能真正增加搜索价值的任何常见字词(如英语中的“a”或“is”)
  • 将单词转换为其常见词干(例如 running、ran 和 runner将转换为“run”,因为它们都是该词的变体形式)
  • 将这些唯一关键字存储在索引中。

然后,当用户使用 Contains Words 运算符在此字段上运行查询时,将针对索引中存储的唯一关键字运行搜索。 对于长文本字段,这比执行子字符串搜索更高效、更快捷。 默认情况下,SQL 将“单词”定义为标点符号之间的一组字符。 例如,句点表示单词的结尾,但句点不被视为单词的一部分。 由于全文搜索索引包含关键字而不是确切的短语,因此你最终将获得包含相同关键字的所有结果(由索引确定)。

使用通配符的关键字或短语查询

使用“包含”或“包含字词”列出与你输入的字词或短语部分或完全匹配的项。

用于筛选关键字的简单列表查询的编辑器。

选择“包含”或“不包含”搜索词或短语的完全或部分匹配项。 选择“包含字词”或“不包含字词”搜索精确短语或使用通配符“*”。 这些运算符使用全文搜索索引。

例如,指定“包含字词”和“inform*”以筛选包含“inform”或“information”或“informational”的文本字段。

将通配符与“包含字词”一起使用。

提示

要了解如何对 AND/OR 子句进行分组,请参阅创建和保存托管查询,Group 子句。 若要查看查询的 WIQL 语法,请安装 WIQL 查询编辑器扩展,以便查看任何查询编辑器条目的 WIQL 版本。

查询特定字词而不是其他字词

使用“包含字词”和“不包含字词”运算符可列出与你输入的字词或短语完全匹配的项,并排除其他字词或短语。 可以将这些运算符与通配符 (*) 结合使用。

在下面的示例中,这些运算符筛选包含工作“Phase”但不包含“Phasor”一词的项的工作项。

查询编辑器的屏幕截图,包含和排除确切的字词。

未定义的字段值查询

可以使用等于运算符 = 并将字段的值留空来查找具有未定义字段值的工作项。 例如,以下筛选器将列出“活动”字段为空的“任务”类型的所有工作项。

基于空白条目进行筛选

若要基于不为空的字段列出工作项,请使用 not 运算符 <> 并将值留空。

为空或不为空的 HTML 字段查询

可以找到带有空“说明”的工作项。 对 HTML 字段使用“Is Empty”或“Is Not Empty”支持列出包含格式文本字段为空或不为空的工作项。 不要使用此运算符指定值。

例如,以下查询筛选器列出了具有某些“说明”字段条目的所有工作项。

基于筛选器的非空 HTML 字段

特殊字符筛选器

要过滤包含 /- 等特殊字符的 URL 或短语,请使用反斜杠转义这些字符。 以下示例展示了如何筛选 URL 和带破折号的短语:

  • URL 的筛选器:搜索包含短语 https://example.com/path-to-resource 的工作项标题。

    • 查询:Title ~ "https:\/\/example.com\/path-to-resource"
    • 结果:返回指定字段中具有准确 URL 的所有工作项。
  • 用于带破折号短语的筛选器:搜索包含 "your-phrase-with-dash"的工作项标题。

    • 查询:Title ~ "feature-update\-2023"
    • 结果:返回指定字段中包含带破折号确切短语的所有工作项。

注意

无法查询没有附加任何标记的工作项。 要对投票支持此功能请求,请在开发人员社区页面上执行此操作,即能够搜索空标记

基于类别的查询

若要根据工作项所属类别筛选工作项,请使用“In Group”运算符。 例如,以下筛选条件将返回在当前项目中、分配给团队成员以及定义为属于 Bug 类别的所有工作项。

用于按类别查找工作项的查询子句

“需求”或“任务”类别中显示哪些项?

每个流程默认分配给每个类别的工作项类型如下。

进程 需求类别 任务类别
基本 问题 任务
敏捷 用户情景 任务
Scrum 产品积压工作项,Bug 任务
CMMI 要求 任务

每个团队都可以确定 Bug 工作项类型是出现在“需求”类别还是“任务”类别中。 请参阅显示积压工作 (backlog) 和工作板块中的 Bug。 可以将自定义工作项类型添加到积压工作。 有关详细信息,请参阅添加或修改工作项类型,将自定义 WIT 添加到积压工作 (backlog) 或工作版块

查询你正在关注的工作项

可以使用 @Follows 宏,根据你正在关注的工作项以及其他查询筛选器筛选列表。

例如,以下查询演示如何跨所有项目查询你正在关注的活动工作项。 将“ID”字段和“In”运算符与”@Follows”宏一起使用。

查询编辑器,其中使用了 ID In @Follows 查询子句

查询最近的工作项活动

可以使用以下宏根据最近的活动列出工作项:

  • @MyRecentActivity:列出最近查看或修改过的项。
  • @RecentMentions:列出过去 30 天内通过“@提及”添加到的项。
  • @RecentProjectActivity:列出最近在项目中创建或修改的项。

指定“ID”字段和“In”或“Not In”运算符。

例如,以下查询显示如何查询最近查看或修改过的工作项。

查询编辑器,其中使用了 ID In @MyRecentActivity 查询子句

大多数工作项类型的通用字段

下表介绍了用于筛选查询的常见字段。 “ID”字段唯一地标识列表中的工作项。 使用“标题”字段将工作项与相同类型的所有其他工作项区分开来。 “说明”和其他格式文本(数据类型=HTML)字段提供了实现工作和跟踪更改所需的其他信息。 创建工作项后,可以更改除“ID”外的所有字段。 添加和保存工作项时,系统会分配一个 ID 且无法更改。

注意

系统自动为数据类型为“纯文本”和“HTML”字段的所有长文本字段编制索引,以进行全文搜索。 这包括“标题”、“说明”和“重现步骤”字段。 有关适用于本地 Azure DevOps 的详细信息以及服务器和排序规则要求,请参阅查询字段、运算符、值和变量 - 全文搜索和部分单词搜索

字段名称

说明

工作项类型


验收条件 1

在关闭 Bug 或产品积压工作项之前,需满足的条件说明。

在开始执行 Bug 或产品积压工作 (backlog) 项之前,应尽可能明确地说明客户验收条件。 团队与客户为定义验收条件进行的会谈有助于确保团队了解客户预期。 验收条件可作为验收测试的基础,以便更有效地评估项目是否圆满完成。

引用名称=Microsoft.VSTS.Common.AcceptanceCriteria,数据类型=HTML

bug、长篇故事、功能、产品积压工作项 (Scrum)

说明 1,2

使用此字段提供有关工作项的深层信息。

引用名称=System.Description,数据类型=HTML

全部

ID

分配给工作项的唯一标识符。 在所有项目上和项目集合中,工作项 ID 是唯一的。

引用名称=System.Id,数据类型=整数

全部

重现步骤(或重现的步骤)1

重现意外行为所需的步骤。 捕获足够的信息,以便其他团队成员了解问题的全部影响,以及他们是否修复了 bug。 此条目包括查找或重现 Bug 和预期行为所执行的操作。
引用名称=Microsoft.VSTS.TCM.ReproSteps,数据类型=HTML

Bug

解决方法

介绍了解决障碍的方式。

引用名称=Microsoft.VSTS.Common.Resolution,数据类型=HTML

障碍 (Scrum)

系统信息1

与 Bug、代码评审或反馈相关的软件和系统配置的信息。

引用名称=Microsoft.VSTS.TCM.SystemInfo,数据类型=HTML

Bug、代码评审请求、反馈请求

团队项目

工作项所属的项目。 如果要将列表筛选为一个或多个项目中的项,请将此字段添加到查询。 有关详细信息,请参阅示例查询、跨项目查询

引用名称=System.TeamProject,数据类型=字符串

全部

标题

总结了工作项的含义以及帮助团队成员将其与列表中其他工作项区分开的简短说明。

引用名称=System.Title,数据类型=字符串

全部

工作项类型

工作项类型的名称。 工作项类型是根据创建项目时使用的流程定义的。 有关详细信息,请参阅关于流程和流程模板添加或修改工作项类型

若要根据工作项的类别分配筛选工作项,可以使用“In Group”和“Not In Group”运算符,并从下拉列表中选择一个类别。

引用名称=System.WorkItemType,数据类型=字符串

全部

注意

升级到 Team Foundation Server 2012 后,“说明”字段已从“纯文本”字段类型更改为“HTML”。 通过使用 witadmin changefield 命令,你可以还原此字段的数据类型。 请参阅管理工作项字段 (witadmin).

REST API

要以编程方式与查询交互,请参阅以下 REST API 资源之一: