Azure cosmosdb 使用DocumentDb连接多个子项

Azure cosmosdb 使用DocumentDb连接多个子项,azure-cosmosdb,Azure Cosmosdb,我试图在DocumentDb上运行以下查询 SELECT p.id FROM p JOIN filter IN p.Filters WHERE filter.Id = "686e4c9c-f1ab-40ce-8472-cc5d63597263" AND filter.Id = "caa2c2a0-cc5b-42e3-9943-dcda776bdc20" 我的json是这样的 { "id": "a3dc570b-26e2-40a9-8777-683186965f78", "

我试图在DocumentDb上运行以下查询

SELECT p.id 
FROM p JOIN filter IN p.Filters
WHERE filter.Id = "686e4c9c-f1ab-40ce-8472-cc5d63597263" 
AND filter.Id = "caa2c2a0-cc5b-42e3-9943-dcda776bdc20"
我的json是这样的

 {
    "id": "a3dc570b-26e2-40a9-8777-683186965f78",
    "Filters": [
      {
        "Id": "686e4c9c-f1ab-40ce-8472-cc5d63597263"
      },
      {
        "Id": "caa2c2a0-cc5b-42e3-9943-dcda776bdc20"
      }
    ]
}
我想查找具有Id为“686e4c9c-f1ab-40ce-8472-cc5d63597263”的子筛选器和Id为“Id”的子筛选器的实体:“CAA2C0-cc5b-42e3-9943-dcda776bdc20”,但是查询不返回任何结果


如果我使用或而不是,我可以得到结果,但这显然不是我想要的结果。

对于在单个父级中跨多个子级查询,可以使用多个
联接

注意:由于必须执行多个交叉产品,这可能会成为一个昂贵的查询

选择p.id
从p
在p.过滤器中加入过滤器1
在p.过滤器中加入过滤器2
其中filter1.Id=“686e4c9c-f1ab-40ce-8472-cc5d63597263”
和过滤器2.Id=“caa2c2a0-cc5b-42e3-9943-dcda776bdc20”
对于子元素的顺序是确定的情况,可以通过在查询中使用子元素的索引来避免执行叉积(
JOIN
)。这将使查询更快、更便宜:

选择p.id
从p
其中p.Filters[0].Id=“686e4c9c-f1ab-40ce-8472-cc5d63597263”
和p.Filters[1].Id=“caa2c2a0-cc5b-42e3-9943-dcda776bdc20”