You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure B2C Graph API如何过滤数组属性signInNames包含指定值

解决Azure B2C AD Graph查询中过滤signInNames数组的问题

我来帮你搞定这个需求——你当前用的是Azure AD Graph API(graph.windows.net),要针对signInNames这种数组类型的属性添加过滤条件,核心是用API支持的any操作符来实现集合元素的条件检查。

实现思路

Azure AD Graph API允许使用any操作符遍历集合(数组)中的元素,并检查是否存在至少一个元素满足指定条件。针对你的场景:

  • signInNames是一个包含多个对象的数组,每个对象有value属性
  • 我们需要检查数组中是否存在任意一个元素的value以'test'开头,对应的表达式是:signInNames/any(s: startswith(s/value, 'test'))
    • 这里的s是集合元素的别名,你可以替换成任意合法名称(比如item),只要前后一致即可

完整查询语句

把这个新条件用or和你原有的过滤规则拼接,最终的查询URL如下(已做好URL编码):

https://graph.windows.net/myTenant/users?$filter=startswith(displayName,'test')%20or%20startswith(givenName,'test')%20or%20startswith(surname,'test')%20or%20startswith(mail,'test')%20or%20startswith(userPrincipalName,'test')%20or%20signInNames/any(s:%20startswith(s/value,'test'))&api-version=1.6

补充说明

  • 如果你需要的是精确匹配而非前缀匹配,只需把startswith替换成eq即可,比如:signInNames/any(s: s/value eq 'test@mail.com')
  • 你使用的api-version=1.6完全支持any操作符,无需升级API版本
  • 这个逻辑仅针对Azure AD Graph API有效;如果后续迁移到Microsoft Graph API(graph.microsoft.com),语法会略有不同,但核心的any思路是类似的

内容的提问来源于stack exchange,提问作者Felix Gerber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:33:47