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