从cosmos DB中提取分区键

时间:2018-06-08 05:25:02

标签: azure azure-cosmosdb azure-cosmosdb-sqlapi

如何提取集合中所有分区键的列表?假设我有cosmos DB的Collection Link。

我正在尝试这样的事情:

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 :(得分:0)

以下是尝试解决此问题的一些想法。有可能:

  • 该集合为空;
  • 没有包含 PartitionKey 名称的文档;
  • 您打算查询文档分区键,例如可能与 / PartitionKey 不同;

---查询和检查文件---

您可以在Azure门户中查询集合中的文档,导航到 CosmosDB / SQL帐户>数据资源管理器> {数据库名称}> {Collection Name}>新SQL查询。然后,在那里运行查询实验并查看所有(分页)文档。

---找到分区键---

您也可以仔细检查Azure门户中的收集分区键,导航到 CosmosDB / SQL帐户>数据资源管理器> {数据库名称}> {Collection Name}>规模&设置并检查分区键字段中定义的内容(例如/ customerid,/ name等)。

例如,考虑分区键定义为 / customerid ,查询将如下所示:

SELECT c.customerid FROM c

或者 / customerid 中的以下查询不是分区键,可能有重复项:

SELECT DISTINCT c.customerid FROM c

答案 1 :(得分:0)

您只需要将Partitionkey修改为分区键的字段名称。

例如,我的分区键是name,因此查询类似于:

select distinct c.name from c

我的查询结果如下:

enter image description here

它还可以提取""undefined

希望它对你有所帮助。