从 CosmosDB 文档嵌套数组中的对象中选择值

2024-05-09

想象一下我们有一个这样的集合(示例取自https://www.documentdb.com/sql/demo https://www.documentdb.com/sql/demo)

{
    "_id" : "19015",
    "description" : "Snacks, granola bars, hard, plain",
    "servings" : [ 
        {
            "amount" : 1,
            "description" : "bar",
            "weightInGrams" : 21
        }, 
        {
            "amount" : 1,
            "description" : "bar (1 oz)",
            "weightInGrams" : 28
        }, 
        {
            "amount" : 1,
            "description" : "bar",
            "weightInGrams" : 25
        }
    ]
}

我如何在 SQL api 中查询 CosmosDB 以获得这样的结果?

{
    "_id" : "19015",
    "servings" : [ 
        {
            "description" : "bar"
        }, 
        {
            "description" : "bar (1 oz)"
        }, 
        {
            "description" : "bar"
        }
    ]
}

在 MongoDB 我会使用这样的查询

db.getCollection('food').find({id: '19015'}, {'servings.description' : 1})

尝试了多种场景的连接等

SELECT 
    food.id,
    food.servings.description
FROM food
WHERE food.id = "19015"

or

SELECT 
    food.id,
    [{
        description: food.servings[0].description
    }] AS servings
FROM food
WHERE food.id = "19015"
  • 代替[0]我试过[] or [$]但不起作用

有人知道如何以简单的方式解决这个问题吗?


您可以使用 ARRAY(子查询)表达式来实现此目的。这是查询:

SELECT
    food.id,
    ARRAY(SELECT serving.description FROM serving IN food.servings) AS servings
FROM food
WHERE food.id = "19015"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 CosmosDB 文档嵌套数组中的对象中选择值 的相关文章

  • 由于端口已在使用中,CosmosDB 模拟器无法启动

    我给了 CosmosDB 一个机会 所以我决定构建一个使用它的应用程序 但在使用模拟器时遇到了这个问题 端口已在使用中 我不确定在哪里重新配置模拟器指向的端口 如果您只想更改 Windows 快捷方式 请右键单击 gt 属性并添加 port
  • 如何在 Spring Data Azure Cosmos DB 中编写动态 sql

    我们计划使用 Spring Data Azure Cosmos DB v3 我看到我们扩展了 CosmosRepository 接口并实现了我们的存储库并应用了 Query 注释 Query value select from c wher
  • 在 Azure Cosmos DB 中使用 REST 进行 CRUD 操作

    我正在尝试使用 REST 在 Azure Cosmos DB 上执行 CRUD 操作 根据链接 https learn microsoft com en us rest api documentdb create a document ht
  • 在 CosmosDB 存储过程中创建和比较日期

    对于 CosmosDB 存储过程及其处理的指导有限new Date 以及日期的比较 以下代码是一个 CosmosDB 存储过程 用于在给定时间后 冻结 文档的写入 该物业currentDoc FreezeDate采用 ISO 8601 格式
  • Azure Cosmos DB 多模型意味着什么?

    看着新的 Azure cosmos 数据库 我对它的多模型性质有点困惑 具体来说 是不是意味着 a 可以同时以多种方式查询相同的底层数据库 存储 以便我可以针对相同的集合使用 gremlin 图形查询和 mongodb api or b 这
  • 保存和测试分区集合的存储过程/触发器(可能是用户定义的函数)

    尝试将修改保存到分区集合中创建的存储过程时 我收到以下错误 保存脚本失败 以下是 Azure 门户中的详细信息 操作名称 无法保存脚本 时间戳 2017 年 2 月 17 日星期五 08 46 32 GMT 0500 东部标准时间 活动发起
  • RU/m 去哪儿了?

    这曾经是 CosmosDb 的一项功能 用于提供每分钟请求单位 以及每秒请求单位 但是该选项似乎已从门户中消失 并且所有在线文档均已删除 谢谢 奥利弗 RU m 已死 刚刚收到微软的回复 我们收到了参与预览计划的客户的大量反馈 从 2017
  • 查询 CosmosDb 非结构化 JSON

    CosmosDB 如何查询动态 JSON 中的属性值 该应用程序允许将 JSON 存储为对象的一组自定义属性 它们被序列化并存储在 CosmosDb 中 例如 这里有两个条目 id ade9f2d6 fff6 4993 8473 a2af4
  • 使用 Azure Function 删除 CosmosDB 条目

    我一直在寻找一种技术 通过浏览器内的代码编辑器 使用 Azure Functions 删除 Cosmos 数据库中的项目 我不想在 VS 上使用本地开发的代码有多种原因 我正在使用的代码可用here https pastebin com X
  • Mongo shell 无法连接到 Azure CosmosDB

    我无法在 Mac 下从 MongoDB Shell 连接到 Azure CosmosDB mongodb api mongo host XXX documents azure com port 10255 username XXX pass
  • DocumentDB - 较新的会话令牌是否保证读回较旧的写入?

    假设我在同一个集合 分区中有两个文档 都处于 版本 1 A1 B1 我更新A1 gt A2 写操作返回一个会话令牌SA Using SA阅读文档A将保证我得到版本A2 现在我更新了B1 gt B2 并获取新的会话令牌SB Using SB阅
  • 如何计算cosmos DB中的不同值

    我在 Cosmos DB 中创建了一些文档 如下所示 class class01 student lastReport Name st01 score C Name st02 score B lastTime 2018 05 10 clas
  • Cosmosdb sql api 和 Cosmosdb cassandra api 之间的存储差异是什么

    大多数文章都提到 如果我们使用 Cosmos Db 并新创建我们的应用程序 我们应该使用 Cosmos db sql api 当您已经将应用程序与实际的 mongo 和 cassandra 集成并且我们希望快速迁移到 cosmosdb 并且
  • 将JSON反序列化为多个继承类

    当我从 DocumentDB 序列化 JSON 对象时 我的Control没有反序列化到OptionsControl与Options财产 我有以下课程 Control public class Control IControl public
  • 处理 DocumentDB 中每秒请求单位 (RU/s) 的峰值

    使用 DocumentDB 最困难的事情之一是计算出每天以及在使用高峰期间运行应用程序所需的每秒请求单位数 RU s 当你犯这个错误时 DocumentDB客户端将抛出异常 这是一个糟糕的使用模型 如果我的应用程序在一天中的特定时间会使用更
  • 在不知道对象键的情况下进行 Cosmos DB 查询

    单个文档示例 id xxxxxx properties a prop type names value John b prop type score value 5 5 c prop type names value Steve 问题 如何
  • DocumentClientException“请求大小太大”

    我创建了 JSON byte length 太大 当我尝试使用 api java 时 documentClient createDocument getTodoCollection getSelfLink document null fal
  • 通过 C# 与 azure 门户查询资源管理器查询时,Int 值不同

    我发现通过 C API 查询与使用 Azure 门户中的查询资源管理器进行查询之间 Int64 字段的值发生了不同的变化 Document id 15072358 f9eb 4e92 bde1 18e038484042 messageId
  • 包含的 CosmosDB Linq 查询不是 IDocumentQuery 类型

    我有一个使用 CosmosDB 的项目 起初我使用了 EFCore 的预览版 但它确实不够成熟 所以我决定选择宇航员 https github com Elfocrash Cosmonaut反而 我有一个 linq 语句 它基本上查看两个属
  • cosmosdb 模拟器没有给出任何结果

    我不知道为什么在查询宇宙数据库时会发生这种情况 它不会显示任何文档 即使是 SELECT FROM c 但显示了 RU 但它与文档选项卡中的文档选项卡配合得很好 如果我使用任何过滤器 那么它也可以工作 但它不适用于 SQL 查询 我已经添加

随机推荐