我正在尝试对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
,我假设由于它是一个嵌套集合而没有正确查询它。
答案 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。