2016-11-18 64 views
3

嵌套文档上的ARRAY_CONTAINS函数似乎从不匹配任何文档。Azure DocumentDB对嵌套文档的ARRAY_CONTAINS

例如,使用Azure DocumentDB Query Playground尝试以下简单查询将不会返回任何结果,即使某些嵌套文档应与此查询匹配。

SELECT * 
FROM food 
WHERE ARRAY_CONTAINS(food.tags.name, "blueberries") 

堆栈溢出刚刚过去的这个question也infered,这种嵌套查询是有效的。

谢谢

回答

4

的第一个参数ARRAY_CONTAINS必须是一个数组。例如,在这种情况下,food.tags作为参数是有效的,但是food.tags.name不是。

以下两个DocumentDB查询是有效的,可能是你在找什么:

SELECT food 
FROM food 
JOIN tag IN food.tags 
WHERE tag.name = "blueberries" 

或者

SELECT food 
FROM food 
WHERE ARRAY_CONTAINS(food.tags, { name: "blueberries" }) 
+0

谢谢亚拉文,这就是我一直在寻找:) – GeorgCantor

+1

也许这是值得更新您以前的答案http://stackoverflow.com/questions/31022740/documentdb-query-on-nested-document-and-root-level因为它使用ARRAY_CONTAINS函数没有数组作为第一个参数。我没有足够的声誉直接发表评论。 – GeorgCantor

+0

谢谢 - 我修复了以前的答案 –