是否可以通过其ID检索文档而无需指定分区键?
我从阅读documentation的理解是,当未指定分区键时,查询将在所有分区中扇出:
以下查询在分区键上没有过滤器 (DeviceId)并扇出到执行它的所有分区 反对分区的索引。请注意您必须指定 EnableCrossPartitionQuery(x-ms-documentdb-query-enablecrosspartition 在REST API中)让SDK跨分区执行查询。
这对于非键属性是有意义的,但鉴于ID是专门处理的,我希望我不需要为它启用跨分区查询。
如果我确实需要启用跨分区查询,这会是一项昂贵的操作吗?
答案 0 :(得分:7)
只通过ID查询将是一个跨分区操作。您应该在FeedOptions.PartitionKey
中的这些查询中包含分区键,或者作为过滤器的一部分。
在DocumentDB中,ID在集合中的所有文档中都是不唯一。相反,“partition key”和“id”的组合是主键,并且唯一地标识集合中的文档。
某些应用程序将分区密钥编码为ID的一部分,例如分区键是客户ID,ID = "customer_id.order_id"
,因此您可以从ID值中提取分区键。