2015-06-24 35 views
3

Alert us |编辑|删除|更改类型 问题 您不能在您自己的帖子上投票嗨!DocumentDb - 嵌套文档和根级别的查询

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

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

,我想查询含有该标记和名称=“搜索”或者有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" 

但后来我得到了一堆重复的记录,从食物中每个文件是次的该文件中的标签的数量。

如何在嵌套集合和根属性上筛选时获得截然不同的结果?

回答

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" }) 

您可以在查询游乐场here测试此查询。

请注意,函数确实使用而不是,所以理想情况下,应该在查询中有另一个过滤器时使用它。否则,唯一的方法是使用先前的查询,然后在客户端执行“distinct”。