2017-05-25 37 views
0

這就是我的文檔的外觀,我想選擇分區鍵作爲/ department/city;這是兩個不同的屬性,一個是員工,另一個是地址(這是嵌入對象到員工)。我試圖給/部門/地址作爲分區鍵,但它沒有列出分區鍵在數據資源管理器中,我假設它考慮城市是部門屬性。如何在documentdb中創建複合分區鍵

{ 
    "eid": "", 
    "entryType": "", 
    "address": 
    { 
    "PIN": "", 
    "city": "", 
    "street": "" 
    }, 
    "name": "", 
    "id": "", 
    "department": "", 
    "age": 
} 

能否請你幫我明白我做錯了,如何設計一個複合分區鍵和分發/存儲/安排根據自己的部門和城市的員工數據。

回答

1

能否請您幫助我理解我在做什麼錯誤,以及如何 設計的複合分區鍵和分發/存儲/安排根據自己的部門和城市 員工數據。

如果我沒有弄錯,目前不支持複合分區鍵。在一個集合中,您必須使用一個屬性來定義分區鍵。

但是,如果你看看REST API,分區鍵被定義爲一個數組(儘管該數組只包含1個元素)。這告訴我Azure未來可能會支持複合分區鍵。

因此,現在您選擇一個屬性(部門或城市)來劃分數據,並定義另一個屬性上的索引以加快搜索速度。

+0

Thanks @gaurav,是的,我可以使用單字段分區鍵,但問題是沒有直接的方法來改變分區鍵,如果我希望在將來。 – lambodar

+0

這是正確的。在創建集合時,您真的需要考慮分區策略。 –

+1

只需大聲思考,就可以用department&city創建一個對象類型屬性並將其設置爲分區鍵。 –

0

在我的CosmosDb多分區集合中,我通常指定partitionKey應該是通用的,只需使用一個字面上稱爲「partitionKey」的屬性即可。這樣做的好處是,只需指定一個對您所插入的特定POCO有意義的值,就可以更好地控制數據的存儲方式。

很可能是某個地方想要將文檔插入到該集合中,而該文檔不符合您在此處顯示的文檔結構。此時,您需要將文檔分成多個集合,或重新設計整個分區關鍵策略。

這裏的折衷是,在查詢過程中,您必須瞭解如何應用這些值,但這可以通過輕量級ORM層輕鬆地在代碼中實施。