您需要在查询中展开文档以通过将数组连接回主文档来获得所需的结果。你想看起来像这样的查询:
SELECT items.id, items.Categories
FROM items
JOIN Category IN items.Categories.Category
WHERE CONTAINS(LOWER(Category.Text), "drink")
然而,因为没有一个DISTINCT查询的概念,这会产生重复,等于包含单词“喝”类项目的数量。所以这个查询将产生两倍的范例文件是这样的:
[
{
"id": "1dbaf1d0-6549-11a0-88a8-001256957023",
"Categories": {
"Category": [
{
"Type": "GS1",
"Id": "10000266",
"Text": "Stimulants/Energy Drinks Ready to Drink"
},
{
"Type": "GS2",
"Id": "10000266",
"Text": "Healthy Drink"
}
]
}
},
{
"id": "1dbaf1d0-6549-11a0-88a8-001256957023",
"Categories": {
"Category": [
{
"Type": "GS1",
"Id": "10000266",
"Text": "Stimulants/Energy Drinks Ready to Drink"
},
{
"Type": "GS2",
"Id": "10000266",
"Text": "Healthy Drink"
}
]
}
}
]
如果分类数组中包含了很多已经在他们“喝”范畴的项目这可能是有问题的,价格昂贵。
您可以剪切下来,如果你是通过更改查询只在一个类别感兴趣:
SELECT items.id, Category
FROM items
JOIN Category IN items.Categories.Category
WHERE CONTAINS(LOWER(Category.Text), "drink")
这将产生更精确的结果,只有每个匹配分类项目显示重复的ID字段过一次:
[{
"id": "1dbaf1d0-6549-11a0-88a8-001256957023",
"Category": {
"Type": "GS1",
"Id": "10000266",
"Text": "Stimulants/Energy Drinks Ready to Drink"
}
},
{
"id": "1dbaf1d0-6549-11a0-88a8-001256957023",
"Category": {
"Type": "GS2",
"Id": "10000266",
"Text": "Healthy Drink"
}
}]
否则,你将有当您从查询让他们回来,除去重复的文件过滤结果。
谢谢:)。 UDF的确是正确和快速的解决方案。然而还有一个问题(我可以把它移到差异文件中) - 但是,以防万一你知道 - 我该如何测试(单元和集成)脚本。在茉莉花有一点经验,但想知道如果天蓝色的SDK脚本有任何。再次感谢!我将其标记为答案。将其修改一下以匹配我的属性。 – Jaya
UDF很容易通过NodeJS上的标准JavaScript测试工具进行测试,因为它们只是JavaScript函数。我使用NodeUnit,但Jasmine是常用选择。为了在NodeJS上测试存储过程(sprocs),我创建了documentdb-mock。 –
感谢您在完成工作后编辑代码。我发布未经测试的代码感觉不好,但没有时间自己尝试一下。希望从我手写的例子中找出它并不难。 :-) –