2015-06-24 42 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」。