azure-cosmosdb - 带有 JOIN 的 Azure Cosmos DB (NOT IS_DEFINED OR) 子句始终计算为 false
问题描述
我有一个文件:
{
contact: {
id: '123'
},
channels: [
{
... some channel info...
}
],
lastUpdatedEpoch: 1583937675
}
我有以下不返回上述文档的查询:
SELECT p FROM p JOIN c IN p.channels
WHERE (NOT IS_DEFINED(p.lastUpdatedEpoch) OR p.lastUpdatedEpoch < 1585733881)
AND p.contact.id = '123'
但是当我删除 NOT IS_DEFINED 检查时,它会正确返回文档:
SELECT p FROM p JOIN c IN p.channels
WHERE (p.lastUpdatedEpoch < 1585733881)
AND p.contact.id = '123'
我还尝试将 NOT IS_DEFINED 子句替换为 FALSE 并返回文档:
SELECT p FROM p JOIN c IN p.channels
WHERE (FALSE OR p.lastUpdatedEpoch < 1585733881)
AND p.contact.id = '123'
此外,如果我删除 JOIN,查询将按预期工作并返回文档:
SELECT p FROM
WHERE (NOT IS_DEFINED(p.lastUpdatedEpoch) OR p.lastUpdatedEpoch < 1585733881)
AND p.contact.id = '123'
对我来说,这种行为是出乎意料的。定义 lastUpdatedEpoch 时,我希望第一个和第二个查询的结果相同(除了 NOT_ISDEFINED 将导致不使用索引这一事实之外)。有人可以解释一下这里发生了什么吗?
解决方案
推荐阅读
- html - HTML input type="date" 保持缓存/传播值
- python - python中十六进制值的总和需要更多时间
- javascript - React v16 – 通过包装组件将 ref 从子级传递给父级
- tableau-api - 在 Tableau 计算字段中,如何检查是否存在与我的参数匹配的记录
- reactjs - 如何进行突变以更改本地缓存 Apollo v3?
- android - 解决有关在 ViewPager 上初始化单个值而不是多个值的问题
- c++ - 如何在蛇游戏中按预期移动蛇?
- reactjs - API 图像未显示在列表中
- express - 使用 NextJS API 有什么好处吗?
- rust - 将类型约束应用于泛型函数的特征相关类型