2017-08-09 46 views
0

我想使用:select *, 4 Type from c添加一個新屬性到查詢的投影,但它失敗,錯誤爲Syntax error, incorrect syntax near ','。嘗試select c.*, 4 Type from c會導致類似的錯誤:Syntax error, incorrect syntax near '*'.如何選擇文檔和新屬性的所有字段

手動投影所有屬性並不是真正的選項,因爲並非所有文檔都包含所有屬性(DocumentDb的最佳功能之一)。

我該怎麼做?

UPDATE

我試圖做到的是東西在任何SQL語言一樣非常簡單。打開您選擇的任何關係數據庫並執行select *, 4 Type from [Table],結果非常簡單:包含所有列的表格以及相應的值加上名爲Type的附加列,其中所有行具有相同的值:4。與此不同的是,在具有模式的關係數據庫中,數據庫中的所有行都包含相同的列,因此可以很容易地枚舉列而不是要求*。在像documentdb這樣的無模式環境中,您無法枚舉它們,因爲可能存在無限組合。

我試圖完成同樣的事情,select c.id, 4 Type from c完成,但所有屬性

+0

你能編輯你的問題來解釋你想要的查詢和結果(包括一些樣本數據)嗎?我不明白你的語法('4 Type'部分沒有意義)。 –

+0

我很不熟悉天青宇宙DB,但select語句看起來不正確。 *表示所有字段,那麼,4型是什麼? – perfo

+0

@perfo上面更新了更新。 –

回答

0

我們通過添加一個用戶定義函數來解決這個問題:

function AddType (c, v) { 
    c['Type'] = v; 
    return c; 
} 

,把它SELECT value udf.AddType(c,4) FROM c

當然,您可以通過傳遞一個數組來更加通用一些,但希望Cosmos Db團隊可以爲其添加本機支持。

警告

此功能增加了開銷,並在我們的內部測試中,它增加了一倍多的資源單元。使用上述功能,select * from c導致90 RU與220 RU。

相關問題