我希望能够提供集合中所有文档的所有属性列表。
我能想出的最好的方法是查询所有文档,然后在客户端构建列表,但这感觉不对。
答案 0 :(得分:1)
执行所需操作的唯一方法是阅读所有文档。但是,如果您担心带宽,那么您可以在只返回属性列表的存储过程中执行此操作。
如果您采用该路线,我建议您从countDocuments sproc here开始,并准备好根据需要多次调用,直到延续时间为空并且没有429错误...或者使用documentdb-utils为您解决这个问题。
或者,我可以在这里给你一个完整的例子。请告诉我。
另一种方法是在编写文档时维护属性列表。如果您经常需要此列表,这将是首选。
答案 1 :(得分:0)
您可以将具有任何类型结构的文档存储在集合中,它们可以完全不同。 您不限制在集合中存储来自相同"架构"。
的所有对象因此,获取集合上的所有可用属性并不是DocumentDB API或SDK所支持的,您可以阅读整个集合,也可以依赖于创建对象时所做的某种约定。
答案 2 :(得分: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);
}
}
}