DocumentDb - 查询嵌套文档和根级别
DocumentDb - query on nested document and root level
提醒我 |编辑 |删除 |更改类型
题
你不能自己投票 post
0
嗨!
假设我有以下方式的文档:
{
id: 123,
tags: [ { name: "something" } ]
}
并且我想查询所有包含名称="searched" 或 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"
但后来我得到了一堆重复的记录,每个来自食物的文档都是该文档中标签数量的倍数。
在对嵌套集合和根属性进行过滤时如何获得不同的结果?
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"。
提醒我 |编辑 |删除 |更改类型 题 你不能自己投票 post 0 嗨!
假设我有以下方式的文档:
{
id: 123,
tags: [ { name: "something" } ]
}
并且我想查询所有包含名称="searched" 或 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"
但后来我得到了一堆重复的记录,每个来自食物的文档都是该文档中标签数量的倍数。
在对嵌套集合和根属性进行过滤时如何获得不同的结果?
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"。