Извлечение ключей раздела из БД Cosmos - PullRequest
0 голосов
/ 08 июня 2018

Как извлечь список всех ключей раздела в коллекции?Предположим, у меня есть ссылка на коллекцию космической БД.

Я пытаюсь что-то вроде этого:

foreach (var id in client.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri("db12", "coll12"),
    "SELECT DISTINCT c.Partitionkey FROM c", queryOptions))
            {
                Console.WriteLine("\tRead------------------- {0} from SQL", id);
            }

это дает пустой результат.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Вам просто нужно изменить Partitionkey на имя поля вашего ключа раздела.

Например, мой ключ раздела - это имя, поэтому запрос выглядит так:

select distinct c.name from c

Мой результат запроса выглядит следующим образом:

enter image description here

Он также может извлечь "" и undefined.

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

0 голосов
/ 08 июня 2018

Вот несколько идей, чтобы попытаться устранить эту проблему.Возможно, что:

  • Коллекция пуста;
  • Нет документов, содержащих PartitionKey name;
  • , которые вы хотели запроситьключ разделения документа, который может отличаться от / PartitionKey , например;

--- Запрос и проверка документов ---

Можно запросить документы в коллекции на портале Azure, перейдите к Учетная запись CosmosDB / SQL> Обозреватель данных> {Имя базы данных}> {Имя коллекции}> Новый запрос SQL .Затем запустите эксперименты с запросами и просмотрите все (разбитые на страницы) документы.

--- Найдите ключ раздела ---

Вы можете дважды проверить коллекциюключ раздела на портале Azure, также перейдите к учетной записи CosmosDB / SQL> Обозреватель данных> {Имя базы данных}> {Имя коллекции}> Масштаб и настройки и проверьте, что определено в поле Ключ раздела(например, / customerid, / name и т. д.).

В качестве примера, учитывая, что ключ раздела определен как / customerid , запрос будет выглядеть так:

SELECT c.customerid FROM c

Или следующий запрос в случае, если / customerid не является ключом раздела и может иметь дубликаты:

SELECT DISTINCT c.customerid FROM c
...