是否可以通过其ID检索文档而无需指定分区键? 我在阅读documentation时的理解是,当未指定分区键时,查询将在所有分区中扇出: The following query does not have a filter on the partition key (DeviceId)
我在阅读documentation时的理解是,当未指定分区键时,查询将在所有分区中扇出:
The following query does not have a filter on the partition key
(DeviceId) and is fanned out to all partitions where it is executed
against the partition’s index. Note that you have to specify the
EnableCrossPartitionQuery (x-ms-documentdb-query-enablecrosspartition
in the REST API) to have the SDK to execute a query across partitions.
这对于非键属性是有意义的,但鉴于ID是专门处理的,我希望我不需要为它启用跨分区查询.
如果我确实需要启用跨分区查询,这会是一个昂贵的操作吗?
只通过ID查询将是一个跨分区操作.您应该在FeedOptions.PartitionKey中的这些查询中包含分区键,或者作为过滤器的一部分.在DocumentDB中,ID在集合中的所有文档中都不是唯一的.相反,“分区键”和“id”的组合是主键,并且唯一地标识集合中的文档.
一些应用程序将分区密钥编码为ID的一部分,例如分区键是客户ID,ID =“customer_id.order_id”,因此您可以从ID值中提取分区键.