使用Cosmos DB如何只查询分区键

时间:2018-05-10 19:22:05

标签: azure-cosmosdb partitioning

我们有一组共享相同分区键的相关文档。想法是简单地将它们分组应该是查询分区键并将它们拼接在一起的情况。我错过了什么?

所以 从c中选择*,其中c.CustomerId =" 500"

将返回说3个文件,地址,销售和发票,这些文件都具有名为CustomerId的属性,值为500.

我很欣赏它不是主键,我故意忽略了一个行键。

也许没有拆分文件就是答案,但随后不同的文件有不同的TTL,这就会产生问题,不管怎么说(

CustomerId是分区键。

ms文档说这是可能的(引用一个城市=西雅图)的例子。他们的分区键是城市......

那么,我错过了什么,对查询的完全误解是宇宙? (我可以说我知道分区键用于将相关数据分解为分区)我不知道这使得它成为一个不可思议的方面。

另外我可以使用分区键和rowkey查询没问题。

编辑2:

这有效:

SELECT * FROM c WHERE c.CustomerId> " 499" AND c.CustomerId< " 501"

2 个答案:

答案 0 :(得分:1)

确定,

因此范围查询工作有点领先。 集合上的自定义索引导致了问题 此时,我已完全删除了自定义索引,并将进行备份,然后发布更具体的答案。

我所看到的是,无论如何,PartitionKey都是隐式索引的。这个ALSO有一个索引,所以这可能导致了搞笑。

Indexing Policies CosmosDB

答案 1 :(得分:0)

也许我根本没有得到,但你必须明确你正在寻找的价值,我认为是不一样的:

<块引用>

c.CustomerId = "500"

VS

<块引用>

c.CustomerId = 500

因为一个是在寻找文本,另一个是在寻找数字,请查看数据的存储方式,如果您想使用该值执行查询,则数据必须相同(并记住 CustomerId 是分区键)。