2017-10-19 126 views
0

比方说,我有以下文件:DocumentDB:如何过滤数组中的文件?

{ 
"Id": "1", 
"Properties": [ 
    { 
     "Name": "Name1", 
     "PropertyTypes": [ 
      "Type1" 
     ] 
    }, 
    { 
     "Name": "Name2", 
     "PropertyTypes": [ 
      "Type1", 
      "Type2", 
      "Type3" 
     ] 
    } 
] 
} 

当我使用下面的SQL:

SELECT c.Id FROM c 
JOIN p in c.Properties 
WHERE ARRAY_CONTAINS(p.PropertyTypes,"Type1") 

我得到的回报:

[ 
{ 
    "Id": "1" 
}, 
{ 
    "Id": "1" 
} 
] 

如何更改我的查询,以便它只返回不同的文件?

+1

https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6719531-provide-support-for-distinct – L30n1d45

+0

有没有任何解决方法(服务器端)? – carens

回答

1

据我所知,Distinct尚未被Azure Cosmos DB支持。

似乎没有办法删除查询SQL级别的重复数据。

您可以在本地处理您的查询结果集loop。但是,如果您的结果数据很大,我建议您使用存储过程来处理Azure Cosmos数据库中的结果数据,以释放本地服务器上的压力。

您可以参考关于SP的official tutorial