2015-12-22 30 views

回答

1

做你想做的事的唯一方法是閱讀所有的文件。但是,如果您擔心帶寬問題,則可以在只返回屬性列表的存儲過程中執行此操作。

如果您採用該路線,我建議您從countDocuments sproc here開始,並準備根據需要多次調用,直到延續時間恢復爲空並且沒有429錯誤...或使用documentdb-utils這爲你照顧。

另外,我可以在這裏給你一個完整的例子。請讓我知道。

另一種方法是在文檔被寫入時維護屬性列表。如果你經常需要這個列表,這將是首選。

+0

這真的不是提供編碼服務的地方(即使免費)。 –

+0

我所提供的是我的答案中更深層的代碼示例。大多數的答案都有代碼示例。有些人甚至在jsfiddle工作。改變了我的答案,以更好地表達這一點。 –

+0

在編寫文檔時維護屬性列表非常適合我的用例。感謝您的建議! – 3bh

0

您可以將具有任何種類結構的文檔存儲在集合中,它們可以全部不同。 您不限制在集合中存儲來自同一「模式」的所有對象。

因此,獲取集合上所有可用的屬性並不真的受到DocumentDB API或SDK的支持,您可以閱讀整個集合,也可以依賴創建對象時所做的某種約定。

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); 
     } 
    } 
} 
相關問題