我有一个数据库,其中包含具有 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
的情况下更新我的查询?
首先,请注意,您不能有重复的
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
。