DocumentDb - 查询嵌套文档和根级别

时间:2015-06-24 09:26:26

标签: azure-cosmosdb

提醒我|编辑|删除|改变类型 题 你不能在自己的帖子上投票 0 嗨!

让我们假设我有以下方式的docuents:

{
  id: 123,
  tags: [ { name: "something" } ]
}

我希望查询包含名称为&#34的标记的所有文档;搜索"或者id = 9000。我在游乐场(https://www.documentdb.com/sql/demo)测试了类似的东西:

SELECT food.id, food.description, food.tags
FROM food
JOIN tag IN food.tags
WHERE food.id = "09052" or tag.name="blueberries"

然后我得到一堆重复记录,食物中的每个文件都是该文档中标签数量的倍数。

如何在嵌套集合和根属性上进行过滤时获得不同的结果?

1 个答案:

答案 0 :(得分:4)

ARRAY_CONTAINS内置函数可能就是您所需要的。有关详细信息,请参阅https://msdn.microsoft.com/library/azure/dn782250.aspx#bk_array_functions,例如:

SELECT food.id, food.description, food.tags
FROM food
WHERE food.id = "09052" or ARRAY_CONTAINS(food.tags, { "name": "blueberries" })

您可以在Query Playground here上测试此查询。

请注意,该功能使用索引,因此理想情况下,如果查询中有另一个过滤器,则应使用此功能。否则,唯一的方法是使用先前的查询,然后执行" distinct"在客户端。