Azure cosmosdb COSMOS数据库集合中的多个分区

Azure cosmosdb COSMOS数据库集合中的多个分区,azure-cosmosdb,document-database,azure-cosmosdb-sqlapi,Azure Cosmosdb,Document Database,Azure Cosmosdb Sqlapi,1) 我有一个Cosmos DB集合,包含大约500k个文档,由属性“SITEID”进行分区。在查询请求选项中,只能传递一个分区键值。在我的例子中,有一些查询需要执行(1,2,3,4)中的SITEID,其中SITEID是分区键 例如,我的SP如下所示: SELECT * FROM c WHERE c.SITEID IN ("SiteId1","SiteId2","SiteId3","SiteId4","SiteId5") AND c.STATUS IN ("Status1","Status2",

1) 我有一个Cosmos DB集合,包含大约500k个文档,由属性“SITEID”进行分区。在查询请求选项中,只能传递一个分区键值。在我的例子中,有一些查询需要执行(1,2,3,4)中的SITEID,其中SITEID是分区键

例如,我的SP如下所示:

SELECT * FROM c WHERE c.SITEID IN
("SiteId1","SiteId2","SiteId3","SiteId4","SiteId5")
AND c.STATUS IN ("Status1","Status2","Status3","Status4")
我使用下面的SQL API代码调用上面的SP

await client.ExecuteStoredProcedureAsync<string>(UriFactory.CreateStoredProcedureUri("DBName", "CollectionName", "Sample"),new RequestOptions { PartitionKey = new PartitionKey("SiteId1") })
wait client.ExecuteStoredProcedureAsync(UriFactory.CreateStoredProcedureUri(“DBName”、“CollectionName”、“Sample”),new RequestOptions{PartitionKey=new PartitionKey(“SiteId1”)})
在上面的SQL API代码中,PartitionKey属性只支持一个值。我需要传递几个分区值。还有其他选择吗

2) “EnableCrossPartitionQuery”属性仅在FeedOptions中可用,但在RequestOptions类中不可用。Client.ExecuteStoreProcedureAsync仅支持RequestOptions参数,不支持FeedOptions。现在我需要一次跨所有分区执行一个存储过程。在ExecuteStoreProcedureAsync方法中是否有任何其他选项可以传递EnableCrossPartitionQuery

(例)

client.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(“DBName”,“CollectionName”),“从c中选择*”,新的FeedOptions{enableCrospartitionQuery=true})。ToList()
等待client.ExecuteStoredProcedureAsync(UriFactory.CreateStoredProcedureUri(“DBName”、“CollectionName”、“Sample”),新请求选项{PartitionKey=new PartitionKey(“WGC”)})

存储过程只能对单个分区执行。你对此无能为力

它们不是一个返回提要的查询,而是一个可以返回任何类型响应的请求。也就是说,他们没有使用
FeedOptions
,而是使用
RequestOptions

您仍然可以将查询作为普通文档查询执行,并将
EnableCrossPartitionQuery
设置为true。Cosmos应该识别查询中的分区键,并且应该将请求限制为特定的分区键值


我说应该,因为这表明情况确实如此,但也有一些评论认为情况并非如此。我建议您检查有关收集点击量的度量。

存储过程只能针对单个分区执行。你对此无能为力

它们不是一个返回提要的查询,而是一个可以返回任何类型响应的请求。也就是说,他们没有使用
FeedOptions
,而是使用
RequestOptions

您仍然可以将查询作为普通文档查询执行,并将
EnableCrossPartitionQuery
设置为true。Cosmos应该识别查询中的分区键,并且应该将请求限制为特定的分区键值

我说应该,因为这表明情况确实如此,但也有一些评论认为情况并非如此。我建议您检查有关收集点击量的指标

client.CreateDocumentQuery<Doc>(UriFactory.CreateDocumentCollectionUri("DBName", "CollectionName"), "select * from c", new FeedOptions { EnableCrossPartitionQuery = true }).ToList()


await client.ExecuteStoredProcedureAsync<string>(UriFactory.CreateStoredProcedureUri("DBName", "CollectionName", "Sample"),new RequestOptions { PartitionKey = new PartitionKey("WGC") })