2016-01-25 28 views
0

比方说,我有一个DocumentDB收集填充了具有这种形状的文件:获取所有根性质

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

现在让我们说我不上面的文档的结构。

有一个查询我可以写,将返回我的属性名称("Name""Dob""Children""IsMale")的一个独特的列表?

换句话说,是否有办法嗅探这些文档的模式?

回答

1

这可能是this question的副本。无论如何,那里的答案可能会给你一些想法。

tl; dr;唯一的方法就是阅读所有的文档。您可以将它们全部拖回到您的机器中,或者您可以在存储过程中读取它们,并只将计算出的模式发送回您的机器。

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); 
     } 
    } 
}