首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >子对象中的CosmosDb查询

子对象中的CosmosDb查询
EN

Stack Overflow用户
提问于 2022-04-26 22:45:04
回答 1查看 65关注 0票数 1

我正试图在我的Azure CosmosDb数据库中为特定用户查找带有“额外存储”高级包的帐户。下面是我的Account对象的样子:

代码语言:javascript
运行
复制
{
   "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"
          }
       ]
   }
}

因此,我的查询条件(英文)是:

  1. 帐户必须包含"John Smith“(id: 333)作为会员。
  2. 它必须在其subscription中有“额外存储”的高级包。

我不确定我是否可以拥有多个JOIN,但下面是我尝试过的,但到目前为止还没有结果:

代码语言:javascript
运行
复制
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")

你知道我怎么才能用“约翰·史密斯”的“额外存储”包得到账户吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-27 01:59:42

此查询将为您提供您要查找的内容。

代码语言:javascript
运行
复制
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"

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72021341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档