我将以下XML保存到DocumentDB:
<DocumentDbTest_Countries>
<country>C25103657983</country>
<language>C25103657983</language>
<countryCode>383388823</countryCode>
<version>2015-08-25T08:36:59:982.3552</version>
<integrity>
<hash-algorithm>sha1</hash-algorithm>
<hash />
</integrity>
<context-info>
<created-by>unittestuser</created-by>
<created-on>2015/08/25 08:36:59</created-on>
<created-time-zone>UTC</created-time-zone>
<modified-by>unittestuser</modified-by>
<modified-on>2015/08/25 08:36:59</modified-on>
<modified-time-zone>UTC</modified-time-zone>
</context-info>
</DocumentDbTest_Countries>
Run Code Online (Sandbox Code Playgroud)
哪个可以保存到DocumentDB中,如下所示:
{
"DocumentDbTest_Countries": {
"integrity": {
"hash-algorithm": "sha1",
"hash": ""
},
"context-info": {
"created-by": "unittestuser",
"created-on": "2015/08/25 08:36:59",
"created-time-zone": "UTC",
"modified-by": "unittestuser",
"modified-on": "2015/08/25 08:36:59",
"modified-time-zone": "UTC"
},
"country": "C25103657983",
"language": "C25103657983",
"countryCode": 383388823,
"version": "2015-08-25T08:36:59:982.3552"
},
"id": "f917945d-eaee-4eff-944d-dae366de7be1"
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,列名确实在DocumentDB中保存了连字符( - )(显然没有任何类型的错误/异常/警告)但是当我尝试进行查找时,它在查询资源管理器中失败了.似乎没有办法搜索带连字符的列名.这是真的?或者,我错过了什么?有人可以指点我某个关于这个限制的文件吗?
对于使用某些字符(空格,"@"," - "等)或与SQL关键字冲突的字段名称,必须使用带引号的属性访问器语法.所以不要写:
SELECT * FROM c WHERE c.context-info.created-by = "unittestuser"
Run Code Online (Sandbox Code Playgroud)
写:
SELECT * FROM c WHERE c["context-info"]["created-by"] = "unittestuser"
Run Code Online (Sandbox Code Playgroud)