Azure Поиск, как получить один конкретный c элемент в коллекции сложного типа - PullRequest
2 голосов
/ 03 августа 2020

У меня есть указатель песен, и у каждой песни есть коллекция клиентов. Если я отфильтровываю песни, содержащие конкретный c customer, все работает отлично, но в результате я получаю всех клиентов для песни. Мне нужно получить песню только с клиентом, которого я фильтрую в коллекции.

Мой индекс выглядит примерно так:

{
   SongId: 1,
   Title: "My song",
   Artist: "Artist",
   Customers: [
   {
      CustomerId: 1,
      ...more customer data
   }
   {
      CustomerId: 2,
      ...more customer data
   }
   ]
}

Мне нужно получить фильтрацию песни по названию и получить данные клиента 1 или ни одного клиента, если покупателя 1 нет в коллекции для этой песни. Возможно ли это?

1 Ответ

3 голосов
/ 04 августа 2020

Сегодня это невозможно. Вам нужно будет отфильтровать сложные элементы коллекции на стороне клиента.

Кроме того, вы не упомянули об этом в своем вопросе, но, похоже, мощность отношения между песнями и клиентами может быть весьма значительной. высокая. В этом случае вам следует рассмотреть другую модель данных, поскольку существует жесткое ограничение на количество элементов, которые вы можете иметь в сложных коллекциях на документ. Даже без этого ограничения существуют практические ограничения для сложных коллекций, например размер документа и невозможность постепенного обновления их во время индексации.

Если ваша модель будет иметь не более нескольких сотен клиентов на песню, вы Возможно, все в порядке, но если они исчисляются тысячами или выше, вам следует пересмотреть свой дизайн.

...