如何从带有guid id的集合中进行选择?
我有这个带有guid id的集合。 当我使用Azure Query Explorer并在上面的combobox中选择了集合时,它可以:
SELECT * FROM c
但是当我尝试选择它时(来自查询exlorer和c#代码):
SELECT * FROM 357fa002-dc7d-4ede-935a-6a0c80cf9239 c
我明白了:
语法错误,无效数值标记’357fa002’。
我试过把它放在guid附近的引号(单引号和双引号)但没有成功..
Microsoft文档声明此集合ID不会破坏任何规则: https : //docs.microsoft.com/pl-pl/azure/documentdb/documentdb-create-collection
集合名称必须介于1到255个字符之间,并且不能包含/ \#? 或尾随空间
如何使用它的id查询此集合?
根据您的描述,我检查了有关DocumentDB SQL语法的FROM子句的官方文档。 以下是上述文档的语法:
FROM ::= {[ JOIN ][,...n]} ::= [[AS] input_alias] | input_alias IN ::= ROOT | collection_name | input_alias | '.' property_name | '[' "property_name" | array_index ']'
对于
,我们可以指定当前连接到的集合的名称。
根据您的情况,我试了一下并重现了这个问题。 此外,我已经测试了这个问题,发现input_alias
或collection_name
只能由数字和字母组成,第一个必须是一个字母。 经过我的测试,我认为到目前为止你无法达到这个目的。 我会报告此问题,您可以在此处添加您的反馈。
更新:
对于客户端库Microsoft Azure DocumentDB for C#,我们可以利用Fiddler在调用DocumentClient.CreateDocumentQuery
时捕获请求,而不指定sqlExpression
参数,如下所示:
var items = client.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(DatabaseId, DocumentCollectionId)).Where( x => x.Date >= filter.From.Date && x.Date <= filter.To.Date ).ToList();
注意:如果没有Where
子句,请求正文将为空。 此时,查询等于“SELECT * FROM root”。
在DocumentDB中,查询的范围限定为单个集合(不是关系数据库中的数据库)。 在REST API中,查询是针对集合URI /dbs/
POST
请求。
在Azure门户的查询资源管理器中,您必须在下拉列表中选择数据库/集合,然后进行查询。
布鲁斯MSFT解决了这个难题。 SELECT * FROM 357fa002-dc7d-4ede-935a-6a0c80cf9239 c
可以像这样执行:
var collectionId = "357fa002-dc7d-4ede-935a-6a0c80cf9239" var uri = UriFactory.CreateDocumentCollectionUri(DatabaseId, collectionId); var sql = string.Format("SELECT * FROM root c", attributeName); var elements = client.CreateDocumentQuery(uri, sql).ToList();
谢谢!
- 什么时候在azure色中创建一个块blob?
- 错误索引方法’Class.Method’无法将参数’log’绑定到类型TraceWriter
- 使用Windows Azure DiagnosticsMonitor时,log4net traceappender仅记录级别为“详细”的消息
- 已发布的C#Bot在一段时间后会遇到内部服务器错误
- 通过代码调用时获取Powershell命令的输出
- 如何使用用户凭据访问Azure Key Vault?
- SQL Azure自动地理复制是否会自动进行故障转移?
- 您可以在一个Windows Azure实例上部署多个Web应用程序吗?
- 下载在门户网站上创建的bot会导致无效/不可执行的解决方案