在 Azure DocumentDB 中,如何获取集合中所有属性的列表?
In Azure DocumentDB, how can I get a list of all properties in a collection?
我希望能够提供集合中所有文档的所有属性列表。
我能想到的最好的方法是查询所有文档,然后在客户端中构建列表,但这感觉不对。
做你想做的唯一方法是阅读所有文档。但是,如果您担心带宽,那么您可以在只有 returns 属性列表的存储过程中完成。
如果您选择这条路线,我建议您从 countDocuments 存储过程 here 开始,并准备好根据需要多次调用,直到继续返回为空并且没有 429 错误...或使用 documentdb-utils 为您处理。
或者,我可以在这里给你一个完整的例子。请告诉我。
另一种方法是在编写文档时维护一个属性列表。如果您经常需要此列表,这将是首选。
您可以在集合中存储任何结构的文档,它们可以完全不同。
您不限于在一个集合中存储来自同一 "schema".
的所有对象
因此,获取集合上的所有可用属性并不是 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);
}
}
}
我希望能够提供集合中所有文档的所有属性列表。
我能想到的最好的方法是查询所有文档,然后在客户端中构建列表,但这感觉不对。
做你想做的唯一方法是阅读所有文档。但是,如果您担心带宽,那么您可以在只有 returns 属性列表的存储过程中完成。
如果您选择这条路线,我建议您从 countDocuments 存储过程 here 开始,并准备好根据需要多次调用,直到继续返回为空并且没有 429 错误...或使用 documentdb-utils 为您处理。
或者,我可以在这里给你一个完整的例子。请告诉我。
另一种方法是在编写文档时维护一个属性列表。如果您经常需要此列表,这将是首选。
您可以在集合中存储任何结构的文档,它们可以完全不同。 您不限于在一个集合中存储来自同一 "schema".
的所有对象因此,获取集合上的所有可用属性并不是 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);
}
}
}