gpt4 book ai didi

azure - Cosmos DB 中查询之间的日期

转载 作者:行者123 更新时间:2023-12-05 04:09:23 24 4
gpt4 key购买 nike

我正在 Cosmos DB 中构建一个简单的事件存储,其中的文档结构如下:

{
"id": "e4c2bbd0-2885-4fb5-bcca-90436f79f155",
"entityType": "contact",
"history": [
{
"startDate": 1504656000,
"endDate": 1504656000,
"Name": "John"
},
{
"startDate": 1504828800,
"endDate": 1504828800,
"Name": "Jon"
}
]
}

这可能不是最有效的存储方式,但这就是我开始的方式。但我希望能够在一段时间内从数据库中查询所有联系人文档。 startDateendDate 表示记录的有效时间。历史记录当前包含可能需要改进的完整历史记录。

我尝试创建这样的查询:

SELECT c.entityType, c.id,history.Name, history.startDate  FROM c
JOIN history in c.history
where
c.entityType = "contact" AND
(history.StartDate <= 1504656001
AND history.EndDate >= 1504656001)

此查询应返回 2017 年 9 月 7 日的联系人状态,但它返回的是每一项历史记录。我尝试过多种选择,但我不确定我错过了什么。

我也尝试过设置索引(也许这就是问题所在?)所以我在这里包含了索引策略:

{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*",
"indexes": [
{
"kind": "Range",
"dataType": "String",
"precision": -1
},
{
"kind": "Range",
"dataType": "Number",
"precision": -1
}
]
}
],
"excludedPaths": []
}

我错过了什么?索引正确吗?我的查询对于查询之间的日期是否正确?

最佳答案

您有两个问题。 Matias 在评论中谈到了其中之一。

第二,你的条件是history.StartDate <= 1504656001 AND history.EndDate >= 1504656001 .

玩弄范围,例如history.StartDate >= 1504656001 AND history.EndDate <= 1504656111 .

关于azure - Cosmos DB 中查询之间的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46084333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com