如何查询 cosmosdb/sql,其中两个属性随时间变化

问题描述 投票:0回答:1

我有一个数据库,其中包含具有 Version 属性和 Tier 属性的文档

示例:

{
    id: "1055984d-01bd-4fbf-877f-0c18ce91552e",
    Version: 1,
    Tier: "basic"
},
{
    id: "1055984d-01bd-4fbf-877f-0c18ce91552e",
    Version: 2,
    Tier: "standard"
}

我希望能够查询我的文档以查找哪些 id 具有 Version=1 和 Tier=basic,以及哪些 id 具有 Version=2 和 Tier=standard。

我尝试编写这样的查询:

select c.id from c
where (c.Version = 1 and c.TierId = "basic")
AND (c.Version = 2 and c.TierId = "standard")

但我没有得到任何结果。我认为它正在寻找同时具有版本 1 和版本 2 的特定文档。有没有办法可以在不使用

AND
的情况下更新我的查询?

azure azure-cosmosdb azure-cosmosdb-sqlapi
1个回答
0
投票

首先,请注意,您不能有重复的

id
值,因为每个文档都必须具有唯一的
id
(例外情况是在不同分区中使用相同的
id
时,这意味着您拥有除
/id 之外的分区键) 
)。因此,您上面提供的示例数据并不真正有效。您需要为每个人提供不同的指南。

现在进行查询。您创建了一种不可能的情况,其中文档具有两组不同的值。不要使用

AND
,而是将您的检查与
OR
结合起来。比如:

SELECT c.id from c
where (c.Version = 1 and c.TierId = "basic")
OR (c.Version = 2 and c.TierId = "standard")

这将为满足任一条件的文档生成一组

id

© www.soinside.com 2019 - 2024. All rights reserved.