获取所有根属性

时间:2016-01-25 16:33:49

标签: azure-cosmosdb

假设我有一个DocumentDB集合,其中填充了具有以下形状的文档:

[{ "Name": "KT",    "Dob": "5/25/1990", "Children": [], "IsMale": false },
 { "Name": "Chris", "Dob": "10/1/1980", "Children": [], "IsMale": true }]

现在让我说我不是上述文件的结构。

我可以写一个查询,它会返回一个不同的属性名称列表("Name""Dob""Children""IsMale")?

换句话说,有没有办法嗅出这些文件的架构?

2 个答案:

答案 0 :(得分:1)

这可能与this question重复。无论如何,那里的答案可能会给你一些想法。

TL;博士;唯一的方法是阅读所有文档。您可以将它们全部拉回到您的机器上,或者您可以在存储过程中读取它们,并仅将计算出的架构发送回您的机器。

答案 1 :(得分:0)

您需要像ORM or ODM这样的Azure DocumentDB动态Slazure来执行此类操作。示例如下:

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

public void EnumProperties()
{
    // Get a reference to the 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);
        }
    }
}