您需要在查詢中展開文檔以通過將數組連接回主文檔來獲得所需的結果。你想看起來像這樣的查詢:
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。 –
感謝您在完成工作後編輯代碼。我發佈未經測試的代碼感覺不好,但沒有時間自己嘗試一下。希望從我手寫的例子中找出它並不難。 :-) –