在Azure DocumentDB中,如何获取集合中所有属性的列表?

时间:2015-12-22 00:12:13

标签: azure azure-cosmosdb

我希望能够提供集合中所有文档的所有属性列表。

我能想出的最好的方法是查询所有文档,然后在客户端构建列表,但这感觉不对。

3 个答案:

答案 0 :(得分:1)

执行所需操作的唯一方法是阅读所有文档。但是,如果您担心带宽,那么您可以在只返回属性列表的存储过程中执行此操作。

如果您采用该路线,我建议您从countDocuments sproc here开始,并准备好根据需要多次调用,直到延续时间为空并且没有429错误...或者使用documentdb-utils为您解决这个问题。

或者,我可以在这里给你一个完整的例子。请告诉我。

另一种方法是在编写文档时维护属性列表。如果您经常需要此列表,这将是首选。

答案 1 :(得分:0)

您可以将具有任何类型结构的文档存储在集合中,它们可以完全不同。 您不限制在集合中存储来自相同"架构"。

的所有对象

因此,获取集合上的所有可用属性并不是DocumentDB API或SDK所支持的,您可以阅读整个集合,也可以依赖于创建对象时所做的某种约定。

答案 2 :(得分:0)

您可以使用Slazure。下面的示例列出了给定文档集的所有属性名称:

using SysSurge.Slazure.AzureDocumentDB.Linq;
using SysSurge.Slazure.Core;
using SysSurge.Slazure.Core.Linq.QueryParser;

public void ShowPropertyNames()
{
    // Get a reference to the TestCstomers collection
    dynamic storage = new QueryableStorage<DynDocument>("URL=https://contoso.documents.azure.com:443/;DBID=DDBExample;TOKEN=VZ+qKPAkl9TtX==");
    QueryableCollection<DynDocument> collection = storage.TestCustomers;

    // Build collection query
    var queryResult = collection.Where("SignedUpForNewsletter = true and Age < 22");

    foreach (DynDocument document in queryResult)
    {
        foreach (KeyValuePair<string, IDynProperty> keyValuePair in document)
        {
            Console.WriteLine(keyValuePair.Key);
        }
    }
}