【问题标题】:Using Cosmos DB how do I query just on the partition key使用 Cosmos DB 如何仅查询分区键
【发布时间】:2018-05-10 19:22:05
【问题描述】:

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

所以 Select * from c where c.CustomerId = "500"

将返回 3 个文档,地址、销售和发票,它们都有一个名为 CustomerId 的属性,值为 500。

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

也许不拆分文档是答案,但是不同的文档有不同的 TTL,这会成为问题,不是吗(

CustomerId 是分区键。

ms 文档说这是可能的(引用 city = seattle )示例。他们的 partitionkey 是 city....

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

我也可以用分区键和行键查询没问题。

编辑 2:

这行得通:

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

【问题讨论】:

    标签: azure-cosmosdb partitioning


    【解决方案1】:

    好的,

    所以范围查询工作有点领先。 集合上的自定义索引导致问题。
    目前,我已经完全删除了自定义索引,并将建立备份,然后发布更具体的答案。

    我读到的是 PartitionKey 无论如何都是隐式索引的。在这个 ALSO 上有一个索引,所以这可能会引起搞笑。

    Indexing Policies CosmosDB

    【讨论】:

      【解决方案2】:

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

      c.CustomerId = "500"

      VS

      c.CustomerId = 500

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多