Как показать уникальные ключи на контейнере Cosmos DB - PullRequest
0 голосов
/ 27 ноября 2018

Эта ссылка означает, что уникальные ключи можно увидеть в контейнере Cosmos DB, просмотрев настройки.Однако я не могу найти их, используя как портал, так и обозреватель хранилища.Как вы можете просмотреть уникальные ключи в существующем контейнере Cosmos DB?У меня есть документ, который не удается загрузить из-за нарушения ключа, которое должно быть невозможным, поэтому мне нужно подтвердить, что это за ключи.

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

Вот основной код, который работал для меня.Код, который записывает коллекцию, выводится в формате Json.Я думаю, что это похоже на то, что вы видите на портале, но оно пропускает или опускает информацию uniqueKeyPolicy.

В качестве примечания, я думаю, я обнаружил ошибку или странное поведение.Вставка нового документа может выдать unique index constraint violation, а обновления - нет.

            this.EndpointUrl = ConfigurationManager.AppSettings["EndpointUrl"];
        this.PrimaryKey = ConfigurationManager.AppSettings["PrimaryKey"];
        string dbname = ConfigurationManager.AppSettings["dbname"];
        string containername = ConfigurationManager.AppSettings["containername"];
        this.client = new DocumentClient(new Uri(EndpointUrl), PrimaryKey);
        DocumentCollection collection = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri(dbname, containername));
        Console.WriteLine("\n4. Found Collection \n{0}\n", collection);
0 голосов
/ 27 ноября 2018

Поддержка отображения уникальной ключевой политики в свойствах коллекции будет добавлена ​​в ближайшее время.Тем временем вы можете использовать DocumentDBStudio , чтобы увидеть уникальные ключи в коллекции.Как только политика уникального ключа установлена, ее нельзя изменить.

WRT странное поведение, не могли бы вы поделиться полностью изолированным репро и объяснить ожидаемое и фактическое поведение.

0 голосов
/ 27 ноября 2018

На основе этого blob должна быть видна политика уникальных ключей, как показано ниже:

"uniqueKeyPolicy": {
    "uniqueKeys": [
      {
        "paths": [
          "/name",
          "/country"
        ]
      },
      {
        "paths": [
          "/users/title"
        ]
      }
    ]
  }

Однако я не мог видеть ее на портале так же, как вы.Возможно, это ошибка.

Вы можете использовать cosmos db sdk в качестве обходного пути для получения политики уникальных ключей, см. Мой пример кода Java.

ResourceResponse<DocumentCollection> response1 = documentClient.readCollection("dbs/db/colls/test", null);
DocumentCollection coll =response1.getResource();
UniqueKeyPolicy uniqueKeyPolicy = coll.getUniqueKeyPolicy();
Collection<UniqueKey> uniqueKeyCollections = uniqueKeyPolicy.getUniqueKeys();

for(UniqueKey uniqueKey : uniqueKeyCollections){
    System.out.println(uniqueKey.getPaths());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...