簡體   English   中英

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

[英]In Azure DocumentDB, how can I get a list of all properties in a collection?

我希望能夠提供集合中所有文檔的所有屬性的列表。

我能想到的最好方法是查詢所有文檔,然后在客戶端中構建列表,但這感覺不對。

做你想做的唯一方法是閱讀所有的文件。 但是,如果您擔心帶寬,那么您可以在只返回屬性列表的存儲過程中進行。

如果你走這條路,我建議你從這里的 countDocuments sproc 開始,並准備好根據需要調用盡可能多的次數,直到繼續返回空並且沒有 429 錯誤......或者使用負責處理的 documentdb-utils給你的。

或者,我可以在這里給你一個完整的例子。 只要讓我知道。

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

您可以在集合中存儲具有任何類型結構的文檔,它們可以完全不同。 您不受限制在集合中存儲來自同一“模式”的所有對象。

因此,獲取集合上的所有可用屬性並不是 DocumentDB API 或 SDK 真正支持的東西,您要么讀取整個集合,要么依賴於您在創建對象時制定的某種約定。

您可以為此使用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);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM