Azure cosmosdb Cosmos DB查询同一字段必须有两个值的文档

Azure cosmosdb Cosmos DB查询同一字段必须有两个值的文档,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,你好,现在有点卡住了。 假设我有一个简单的收藏(可能不是很好构建的…): 我想获取特定应用程序的所有用户id,该应用程序id必须使用两个特定版本的应用程序 如果只要求一个特定的版本,这是很容易的 select c.user_id from c where c.application_id='123456' and c.version='1.0' 但是如果我只是尝试添加另一个版本(使用AND运算符),结果是空的,这是正常的。 我尝试了加入操作符,但没有成功 还可以说,我的SQL背景又老又差,我不

你好,现在有点卡住了。 假设我有一个简单的收藏(可能不是很好构建的…):

我想获取特定应用程序的所有用户id,该应用程序id必须使用两个特定版本的应用程序

如果只要求一个特定的版本,这是很容易的

select c.user_id from c where c.application_id='123456' and c.version='1.0'
但是如果我只是尝试添加另一个版本(使用AND运算符),结果是空的,这是正常的。 我尝试了加入操作符,但没有成功

还可以说,我的SQL背景又老又差,我不谈论Cosmos DB SQL的特殊性

但我希望能够检测到使用了两个版本的 特定应用程序

也许我明白你的意思。你是说你的数据如下:

一个用户ID有v1和v2,而另一个用户ID有v1。现在您只需要选择A,因为A跨越v1和v2。恐怕单查询sql无法实现此要求。您可以参考以下sql:

SELECT count(c.version) as count,c.userid FROM c
where (c.version='v1' or c.version='v2')
group by c.userid 


因此,您可以根据
count=2
知道哪个用户标识跨越了v1和v2。只需自己循环结果。

只是好奇,你能不能像
从c中选择c.user\u id,其中c.application\u id='123456'和(c.version='1.0'或c.version='2.0')
?不,因为我需要获取使用version=1.0和version=2.0的用户id。不能是imo或operator@user1523812别明白你的意思。这意味着什么?
我需要获取使用version=1.0和version=2.0的用户id??一个用户id在一个文档中有一个版本和一个应用程序id,这是真的吗?是的,这是真的。但我希望能够检测到使用了两个特定应用程序版本的用户id。
SELECT count(c.version) as count,c.userid FROM c
where (c.version='v1' or c.version='v2')
group by c.userid