提醒我|编辑|删除|改变类型 题 你不能在自己的帖子上投票 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"
然后我得到一堆重复记录,食物中的每个文件都是该文档中标签数量的倍数。
如何在嵌套集合和根属性上进行过滤时获得不同的结果?
答案 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"在客户端。