匹配数组中多个值的 CosmosDB SQL 查询

2024-01-05

我正在使用 Cosmos DB,我想编写一个 SQL 查询来匹配数组中的多个值。为了详细说明,假设您有以下集合:

[
    {
        "id": "31d4c08b-ee59-4ede-b801-3cacaea38808",
        "name": "Oliver Queen",
        "occupations": [
            {
                "job_title": "Billionaire",
                "job_satisfaction": "pretty good"
            },
            {
                "job_title": "Green Arrow",
                "job_satisfaction": "meh"
            }
        ]
    },
    {
        "id": "689bdc38-9849-4a11-b856-53f8628b76c9",
        "name": "Bruce Wayne",
        "occupations": [
            {
                "job_title": "Billionaire",
                "job_satisfaction": "pretty good"
            },
            {
                "job_title": "Batman",
                "job_satisfaction": "I'm Batman"
            }
        ]
    },
    {
        "id": "d1d3609a-0067-47e4-b7ff-afc7ee1a0147",
        "name": "Clarke Kent",
        "occupations": [
            {
                "job_title": "Reporter",
                "job_satisfaction": "average"
            },
            {
                "job_title": "Superman",
                "job_satisfaction": "not as good as Batman"
            }
        ]
    }
]

我想编写一个查询,该查询将返回具有 job_title 为“亿万富翁”和“蝙蝠侠”的职业的所有条目。需要明确的是,结果必须同时具有两个 job_titles。所以在上面的集合中它应该只返回 Bruce Wayne。

到目前为止我已经尝试过:

SELECT c.id, c.name, c.occupations FROM c
WHERE ARRAY_CONTAINS(c.occupations, {'job_title': 'Billionaire' })
AND ARRAY_CONTAINS(c.occupations, {'job_title': 'Batman' })

and

SELECT c.id, c.name, c.occupations FROM c
WHERE c.occupations.job_title = 'Batman' 
AND c.occupations.job_title = 'Billionaire'

两者都返回空结果。

提前致谢


您需要使用 ARRAY_CONTAINS(array, search_value, is_partial_match = true),即查询是:

SELECT c.id, c.name, c.occupations 
FROM c
WHERE ARRAY_CONTAINS(c.occupations, {'job_title': 'Billionaire' }, true)
AND ARRAY_CONTAINS(c.occupations, {'job_title': 'Batman' }, true)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

匹配数组中多个值的 CosmosDB SQL 查询 的相关文章

  • 在 Azure Cosmos DB 中使用 REST 进行 CRUD 操作

    我正在尝试使用 REST 在 Azure Cosmos DB 上执行 CRUD 操作 根据链接 https learn microsoft com en us rest api documentdb create a document ht
  • Azure Cosmo DB 是否对 45MB 数据库多收费?

    我们使用的 Cosmos DB 是 MongoDB 我们的数据库大小只有 45 MB 所有集合中的文档少于 10 000 个 我们每天运行少量查询和写入 每天少于 3000 个请求 而且我们每晚运行 MongoDB Dump 将整个数据库转
  • Janusgraph在.net core 3.0中使用Gremlin查询

    我们目前在 net core 3 0 应用程序中使用 gremlin net 库来连接到 Janusgraph db 我们需要在 janusgraph 中执行以下查询g V 12345 outE myedge has datetime lt
  • 如何通过命令行填充 CosmosDB 集合?

    我正在为 Azure 开发一组脚本 我想知道如何使用以下命令填充 CosmosDB 集合az 目前 我知道如何创建数据库和集合 但如何初始化数据库 az cosmosdb create resource group RESOURCE GRO
  • 创建新的 Azure Cosmos DB 时缺少位置选项

    我想在我的免费 MPN 订阅下创建一个新的 Azure Cosmos DB 并希望将位置设置为 欧洲 西欧 就像我为 ResourceGroup 所做的那样 但此位置 以及许多其他位置 是无法使用 请在此处查看完整列表 https i st
  • 无法解析属性“CosmosDBAttribute.ConnectionStringSetting”的值

    我使用 Visual Studio 和 CosmosDB 输出开发了简单的服务总线触发器 Service Bus 和 CosmosDB 的连接字符串在 local settings json 中定义 代码在本地功能齐全 现在我已经将 Zip
  • Azure Functions 和 DocumentDB 触发器

    是否可以指定 DocumentDB 在写入 DocumentDB 时触发触发器 我有一个 Azure 函数 可以从服务总线队列中提取 JSON 消息并将它们放入 DocumentDB 中 如下所示 using System using Sy
  • Mongo shell 无法连接到 Azure CosmosDB

    我无法在 Mac 下从 MongoDB Shell 连接到 Azure CosmosDB mongodb api mongo host XXX documents azure com port 10255 username XXX pass
  • Azure DocumentDB 十进制截断

    我目前正在使用 Azure DocumentDB 来存储带有价格的产品数据 几乎一切都工作得很好 但现在我遇到了一个问题 即从 DocumentDB 读取时我的小数 System Decimal 被截断 比如这个价格 Input Price
  • 嵌套文档上的 Azure DocumentDB ARRAY_CONTAINS

    似乎是ARRAY CONTAINS嵌套文档上的函数永远不会匹配任何文档 例如 尝试使用 Azure DocumentDB 进行以下简单查询查询游乐场 https www documentdb com sql demo Sandbox SEL
  • 从 Function 应用访问虚拟网络中的 Cosmos DB

    对这么长的帖子表示歉意 但我已经在这个问题上工作了几天 但似乎找不到解决方案 情况 我想通过将 Azure 中的 Cosmos DB 放置在虚拟网络 VNet 中来限制对它的访问 并且只允许通过 Function 应用进行访问 Approa
  • Azure Function CosmosDBTrigger 不可扩展

    我有一个带有 CosmosDBTrigger 的 Azure 函数 用于使用 Application Insights 监控的消费游戏 正在监控的集合有500 000插入更改提要中 消费计划将实例数量扩大到15几分钟之内 但只有第一个实例能
  • 减少 CosmosDB 的预配置吞吐量

    我有一个 cosmos DB 它在数据库级别配置了 4 个容器和 400 个 RU 我添加了 2 个容器 并且在没有警告的情况下 配置的 RU 增加到了 600 个 下面的文档解释了为什么会发生这种情况 第 4 个以上的每个容器至少需要额外
  • Cosmos DB Change Feed 的多个使用者

    我正在使用更改源处理器库 或 Azure Functions Cosmos DB 触发器 来订阅集合更新 如何为同一集合的 feed 设置多个独立 非竞争 消费者 一种方法是使用多个租赁集合 例如leases1 leases2等等 但这有点
  • Cosmos DB 中的向后分页

    我正在尝试在我的 Vue 前端上使用 c 和 cosmos 实现一个简单的分页系统 但我不确定当用户想要返回时实现分页的最佳方法 为了前进 我使用延续令牌 所以 Cosmos 知道我已经到了哪里 但我不太确定向后工作的最佳方法 或者如果用户
  • Azure 中的 EUAP 区域是什么?

    Azure 中的某些区域被称为 EUAP 区域 但是我无法找到任何关于这意味着什么的定义 EUAP 代表什么 https learn microsoft com en us dotnet api microsoft azure docume
  • DocumentClientException“请求大小太大”

    我创建了 JSON byte length 太大 当我尝试使用 api java 时 documentClient createDocument getTodoCollection getSelfLink document null fal
  • Azure COSMOS DB 如何查询数组中的内容

    如何进行查询以获取文档数组 roles 中包含某些内容的文档 我想获取以下文档 其中 Trainer 是数组中的元素 enabled true profilePicture null roles Trainer Client SELECT
  • 通过 C# 与 azure 门户查询资源管理器查询时,Int 值不同

    我发现通过 C API 查询与使用 Azure 门户中的查询资源管理器进行查询之间 Int64 字段的值发生了不同的变化 Document id 15072358 f9eb 4e92 bde1 18e038484042 messageId
  • Cosmos DB 延续令牌大小影响查询是否返回新文档

    我正在摆弄 Azure Cosmos DB 通过 NET SDK 并注意到一些奇怪的事情 通常 当我使用延续令牌逐页请求查询时 我永远不会获得在创建第一个延续令牌之后创建的文档 我可以观察到已更改的文档 缺少已删除 或者更确切地说是新过滤出

随机推荐