选择满足谓词的嵌套对象

Selecting nested objects which satisfy a predicate

在 Azure 搜索中,是否可以 select 满足谓词的数组(Collection(Edm.ComplexType) 字段)中的对象?

如果数组中的任何对象满足谓词,则使用在 https://docs.microsoft.com/en-us/azure/search/search-query-understand-collection-filters#correlated-versus-uncorrelated-search returns 处指定的 any 运算符整个根对象。

示例,在 Azure 搜索中给出以下对象:

{
  "arrayOfObjects": [
    {
      "id": 1,
      "foo": "a"
    },
    {
      "id": 2,
      "foo": "b"
    },
    {
      "id": 3,
      "foo": "b"
    }
  ]
}

是否可以 select 仅 select foo 等于“b”的嵌套对象,以便搜索响应如下所示:

{
  "arrayOfObjects": [
    {
      "id": 2,
      "foo": "b"
    },
    {
      "id": 3,
      "foo": "b"
    }
  ]
}

不,这是不可能的。 Azure 搜索中的查询以文档的粒度而不是文档中的对象进行操作。一种可能的解决方法是对索引进行建模,使单个对象成为顶级文档。