嵌套集合中的Cosmos Db DateTime查询

时间:2019-08-05 07:45:22

标签: nosql azure-cosmosdb

我正在尝试对Cosmos DB中的嵌套集合执行一些基本的DateTime操作。

以下是文档结构的示例:

{
    "id": "9a8b63d1-0b35-477a-9eee-f44bd41cbbcc",
    "Name": "Some Name",
    "StoredReports": [
        {
            "Name": "Test 1234",
            "CreatedOn": "2019-07-24T07:26:51.2395361Z"
        },
        {
            "Name": "Test 1234",
            "CreatedOn": "2019-07-29T07:26:51.2395361Z"
        }
    ]
}

我想做的就是在StoredReport.CreatedOn字段上执行一些基本操作。

这里是一个例子:

SELECT * FROM c WHERE c.StoredReport.CreatedOn > '2019-07-25T07:26:51.2395361Z'

但是那不返回任何记录,我希望它返回文档,但是只有1个StoredReport,我假设由于它是一个嵌套集合而没有正确查询它。

1 个答案:

答案 0 :(得分:1)

首先,您的文档包含StoredReports属性和SQL查询StoredReport列。它们是不匹配的。

然后,StoredReports是一个数组,因此您需要使用EXISTS来查询嵌套的文档。

SELECT * 
FROM c
WHERE EXISTS (
    SELECT VALUE s 
    FROM s IN c.StoredReports 
    WHERE s.CreatedOn > '2019-07-25T07:26:51.2395361Z'
 ) 

有关更多平仓选项,请参见https://docs.microsoft.com/azure/cosmos-db/sql-query-subquery