我正试图在我的Azure CosmosDb数据库中为特定用户查找带有“额外存储”高级包的帐户。下面是我的Account
对象的样子:
{
"id": 123,
"name": "My Account",
"members": [
{
"id": 333,
"name": "John Smith"
},
{
"id": 555,
"name": "Jane Doe"
}
],
"subscription": {
"type": "great-value",
"startDate": "2022-04-21T16:38:00.0000000Z",
"premiumPackages": [
{
"type": "extra-storage",
"status": "active"
},
{
"type": "video-encoding",
"status": "cancelled"
}
]
}
}
因此,我的查询条件(英文)是:
subscription
中有“额外存储”的高级包。我不确定我是否可以拥有多个JOIN
,但下面是我尝试过的,但到目前为止还没有结果:
SELECT c.id, c.name, s.premiumPackages.status
FROM c JOIN m IN c.members
JOIN s IN c.subscription
WHERE CONTAINS(m.id, 333)
AND CONTAINS(s.premiumPackages.type, "extra-storage")
你知道我怎么才能用“约翰·史密斯”的“额外存储”包得到账户吗?
发布于 2022-04-27 01:59:42
此查询将为您提供您要查找的内容。
SELECT c.id, c.name, premiumPackages.status
FROM c
JOIN (SELECT VALUE m FROM m IN c.members WHERE m.id = 333)
JOIN (SELECT VALUE s FROM s IN c.subscription.premiumPackages WHERE s.type
= "extra-storage") AS premiumPackages
这篇关于理解如何在Azure Cosmos DB中查询数组的博客文章有助于在尝试为数组编写查询时保留书签。
PS,宇宙数据库根目录上的id
必须是一个字符串,所以"id": 123
应该是"id": "123"
。
https://stackoverflow.com/questions/72021341
复制相似问题