Cosmos DB - Select 基于子数据的根文档
Cosmos DB - Select root document based on child data
抱歉,如果这是一个新手问题,但我是 Cosmos DB 的新手。
我正在尝试 select 我集合中的所有根文档,其中有一个子元素符合指定的(多个)条件。
假设您有一个 ORDER 文档,其中包含 ORDERITEMS 作为子数据文档,我需要做的是查询已订购特定产品的所有订单,并 return 整个订购文件。
[
{
"order": {
"id": "1",
"orderiems": [
{
"partcode": "A",
"qty": "4"
},
{
"partcode": "B",
"qty": "4"
},
{
"partcode": "C",
"qty": "4"
}
]
}
},
{
"order": {
"id": "2",
"orderiems": [
{
"partcode": "A",
"qty": "4"
},
{
"partcode": "B",
"qty": "4"
},
{
"partcode": "A",
"qty": "4"
}
]
}
},
{
"order": {
"id": "3",
"orderiems": [
{
"partcode": "A",
"qty": "1"
}
]
}
}
]
我的查询是
SELECT order from order
JOIN items in order.orderitem
WHERE item.partcode = '<mypartcode>
AND item.qty > 1
现在,这种工作方式 return 向我发送订单,但它正在 returning
- id: 1
- 编号:2
- id: 2 << 重复
因为 id: 2
有两个相同的项目.... id: 3
排除因为它只有 1 个项目
在正常的 SQL 服务器中 SQL 我只需要
SELECT *
from Orders o
where exists (select 1
from OrderItems oi
where oi.ordID = o.ID
and oi.partcode = 'A'
and oi.qty > 1)
请问如何停止复制
请注意,以上是为了简化问题而手工制作的表示,因为我实际上正在处理一个非常大的文档模型
Cosmos DB 现在支持 DISTINCT 关键字,它实际上适用于像您这样的文档用例。
使用当前版本的 Azure Cosmos DB SQL API 您可以使用其中的一些:
SELECT distinct VALUE order
FROM order
JOIN item in order.orderitems
WHERE item.partcode = '<Partcode>'
AND item.qty > 1
或者:
SELECT order
FROM order
WHERE EXISTS (
SELECT NULL
FROM item IN order.orderitems
item.partcode = '<Partcode>'
AND item.qty > 1
)
抱歉,如果这是一个新手问题,但我是 Cosmos DB 的新手。
我正在尝试 select 我集合中的所有根文档,其中有一个子元素符合指定的(多个)条件。
假设您有一个 ORDER 文档,其中包含 ORDERITEMS 作为子数据文档,我需要做的是查询已订购特定产品的所有订单,并 return 整个订购文件。
[
{
"order": {
"id": "1",
"orderiems": [
{
"partcode": "A",
"qty": "4"
},
{
"partcode": "B",
"qty": "4"
},
{
"partcode": "C",
"qty": "4"
}
]
}
},
{
"order": {
"id": "2",
"orderiems": [
{
"partcode": "A",
"qty": "4"
},
{
"partcode": "B",
"qty": "4"
},
{
"partcode": "A",
"qty": "4"
}
]
}
},
{
"order": {
"id": "3",
"orderiems": [
{
"partcode": "A",
"qty": "1"
}
]
}
}
]
我的查询是
SELECT order from order
JOIN items in order.orderitem
WHERE item.partcode = '<mypartcode>
AND item.qty > 1
现在,这种工作方式 return 向我发送订单,但它正在 returning
- id: 1
- 编号:2
- id: 2 << 重复
因为 id: 2
有两个相同的项目.... id: 3
排除因为它只有 1 个项目
在正常的 SQL 服务器中 SQL 我只需要
SELECT *
from Orders o
where exists (select 1
from OrderItems oi
where oi.ordID = o.ID
and oi.partcode = 'A'
and oi.qty > 1)
请问如何停止复制
请注意,以上是为了简化问题而手工制作的表示,因为我实际上正在处理一个非常大的文档模型
Cosmos DB 现在支持 DISTINCT 关键字,它实际上适用于像您这样的文档用例。
使用当前版本的 Azure Cosmos DB SQL API 您可以使用其中的一些:
SELECT distinct VALUE order
FROM order
JOIN item in order.orderitems
WHERE item.partcode = '<Partcode>'
AND item.qty > 1
或者:
SELECT order
FROM order
WHERE EXISTS (
SELECT NULL
FROM item IN order.orderitems
item.partcode = '<Partcode>'
AND item.qty > 1
)