gpt4 book ai didi

azure-cosmosdb - 使用 DocumentDb 加入多个 child

转载 作者:行者123 更新时间:2023-12-03 22:45:17 25 4
gpt4 key购买 nike

我正在尝试在 DocumentDb 上运行以下查询

SELECT p.id 
FROM p JOIN filter IN p.Filters
WHERE filter.Id = "686e4c9c-f1ab-40ce-8472-cc5d63597263"
AND filter.Id = "caa2c2a0-cc5b-42e3-9943-dcda776bdc20"

我的json是这样的

 {
"id": "a3dc570b-26e2-40a9-8777-683186965f78",
"Filters": [
{
"Id": "686e4c9c-f1ab-40ce-8472-cc5d63597263"
},
{
"Id": "caa2c2a0-cc5b-42e3-9943-dcda776bdc20"
}
]
}

我想找到具有 ID 为“686e4c9c-f1ab-40ce-8472-cc5d63597263”的子过滤器和 ID 为“Id”的子过滤器的实体:“caa2c2a0-cc5b-42e3-9943-dcda776bdc20”,但是查询不返回任何结果。

如果我使用 OR 而不是 AND 我可以得到结果,但这显然不是我想要的结果。

最佳答案

要查询单个父项中的多个子项 - 您可以使用多个 JOINS

注意:由于必须执行多个叉积,这可能会成为一个昂贵的查询。

SELECT p.id
FROM p
JOIN filter1 IN p.Filters
JOIN filter2 IN p.Filters
WHERE filter1.Id = "686e4c9c-f1ab-40ce-8472-cc5d63597263"
AND filter2.Id = "caa2c2a0-cc5b-42e3-9943-dcda776bdc20"

对于子元素的顺序是确定性的情况 - 您可以通过在查询中使用子元素的索引来避免执行叉积 (JOIN)。这将是更快和更便宜的查询:

SELECT p.id
FROM p
WHERE p.Filters[0].Id = "686e4c9c-f1ab-40ce-8472-cc5d63597263"
AND p.Filters[1].Id = "caa2c2a0-cc5b-42e3-9943-dcda776bdc20"

关于azure-cosmosdb - 使用 DocumentDb 加入多个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32527338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com