Сравнить свойства массива в Cosmos DB (SQL API) - PullRequest
0 голосов
/ 06 августа 2020

Предположим, у нас есть документы Cosmos DB следующего вида:

{ "propA": [1, 2, 3], 
  "propB": [7, 2, 4, 2] }

Можно ли написать запрос, который возвращает все документы, в которых хотя бы один элемент в propA является членом propB (в порядке слов, где два свойства имеют непустое пересечение)?

И если да, возможно ли это также с использованием LINQ (и. NET Cosmos Client)?

1 Ответ

1 голос
/ 07 августа 2020

Попробуйте что-то вроде этого sql:

SELECT distinct value c FROM c join d in c.propA where array_contains(c.propB,d)

Вот мой результат:

введите описание изображения здесь

LINQ:

FeedIterator<Prop> setIterator = this.container.GetItemLinqQueryable<Prop>().SelectMany(prop => prop.propA.Where(e => prop.propB.Contains(e)).Select(e => prop).Distinct()).ToFeedIterator<Prop>();

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...