【问题标题】:How to query an array inside another array in CosmosDB?如何在 CosmosDB 中查询另一个数组中的数组?
【发布时间】:2023-02-09 21:59:12
【问题描述】:

我有类似于以下 json 结构的东西,我需要在 Azure CosmosDB 数据资源管理器中搜索特定文件名(无论位置如何),我一直在尝试不同的方法并使用 CROSS APPLY FLATTEN 但我无法得到它

{
"entityId": "f07256a5-0e60-412a-bcc9-2e1aa66b69f5",
"array1": [
    {
        
        "array2": [
            {
                "fileName": "filename1.pdf",
            },
            {
                "fileName": "filename2.pdf",
            }
        ]
    }
]

}

有任何想法吗?谢谢

【问题讨论】:

  • 看起来其他一些问题类似并回答这个问题,例如this onethis one

标签: azure azure-cosmosdb azure-cosmosdb-sqlapi


【解决方案1】:

这个对我有用:

SELECT c.entityId
FROM c
JOIN one IN c.array1
JOIN two IN one.array2
WHERE two.fileName = 'filename1.pdf'

它使用自连接为每个文件名创建一个对象,然后从具有正确文件名的对象中过滤。

【讨论】:

    【解决方案2】:

    你需要像下面这样的东西,

    SELECT 
        c.fileName  
    FROM d
    JOIN f IN d.array1
    JOIN c IN f.array2
    WHERE c.fileName = "filename1.pdf"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2021-09-25
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多