2017-08-09 86 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。

相关问题