问题描述
我正在对我的Cosmos数据库运行一些查询,结果似乎没有意义。当我知道应该得到一些结果时,通过一些查询我得到0个结果。这是查询的结果:
SELECT COUNT(c.id) from c where c.ownerTime='2010775021_202009' -- 165229
SELECT COUNT(c.id) from c where c.ownerTime='2010775021_202009' and c.source='five9' -- 132100
SELECT COUNT(c.id) from c where c.ownerTime='2010775021_202009' and c.source<>'five9' -- 0
SELECT COUNT(c.id) from c where c.ownerTime='2010775021_202009' and c.source=null -- 0
我的目标是对source
属性不等于'five9'的所有项目进行计数。但是该查询(如上所示)返回的计数为0。如您所见,在第一个查询中,此分区中的项目总数为165,229。从第二个查询开始,此分区中source
等于'five9'的项目总数为132,100。常识告诉我,来源不等于“ five9”的项目数应为33,129。为什么我的查询显示为0?
要记住的一件事是,当我去检查原始形式的项目时,没有source='five9'
的项目根本没有source
属性。会导致这种现象吗?另外,ownerTime
是分区键。
这是一小部分数据样本:
SELECT c.id,c.ownerTime,c.source from c where c.ownerTime='2010775021_202009'
...
{
"id": "L2n8D4c4GOFQTUA","ownerTime": "2010775021_202009"
},{
"id": "3524zXL55zQmQ8qk","ownerTime": "2010775021_202009","source": "five9"
}
...
解决方法
请尝试以下sql:
SELECT COUNT(c.id) from c where c.ownerTime='2010775021_202009' and (not IS_DEFINED(c.source) or c.source<>'five9')