2017-10-18 82 views
0

多个项目DocumentDB过滤文件我有一个宇宙DB数据库具有以下格式的文件:在孩子阵列

{ 
    "Id": "1", 
    "Price": 200, 
    "Properties": [ 
    { 
     "Name": "Name1", 
     "Type": "Type1",    
    }, 
    { 
     "Name": "Name2", 
     "Type": "Type2",    
    } 
    ] 
}, 
{ 
    "Id": "2", 
    "Price": 500, 
    "Properties": [ 
    { 
     "Name": "Name1", 
     "Type": "Type1",    
    }, 
    { 
     "Name": "Name2", 
     "Type": "Type3",    
    } 
    ] 
}, 
{ 
    "Id": "3", 
    "Price": 400, 
    "Properties": [ 
    { 
     "Name": "Name1", 
     "Type": "Type2",    
    } 
    ] 
} 

我想创建一个返回满足多个属性的文档的查询。例如。我想检索具有Type1和Type2属性的文档。结果应该只给出Id = 1的文档。

回答

3
SELECT c.Id 
FROM c 
WHERE ARRAY_CONTAINS(c.Properties, {'Type': 'Type1' }, true) 
AND ARRAY_CONTAINS(c.Properties, {'Type': 'Type2' }, true) 
+0

第三个参数(true)的作用是什么?我找不到有关这个论点的任何文件。 – carens

+2

第三个布尔参数用于启用或禁用部分匹配(即,该对象的该属性匹配,但该对象的其余部分不需要)。它似乎没有很好的记录 –

+0

看到这个问题https://stackoverflow.com/questions/46794691/cosmosdb-sql-query-that-matches-multiple-values-in-an-array这是由某人直接回答来自宇宙团队 –