2015-08-24 40 views
0

我存儲在DocumentDb這個非常簡單的測試文檔:簡單的SQL選擇不工作DocumentDB

{ 
    "DocumentDbTest_Countries": { 
     "@country": "C24105130563", 
     "@language": "C24105130563", 
     "@countryCode": 1663405662, 
     "@version": "2015-08-24T08:51:32:030.6165" 
    }, 
    "id": "729607bd-38c5-2a96-0bc4-371a0a5bca4a" 
} 

,我可以很容易找到使用文檔資源管理器,並且,還使用下面的SQL查詢中查詢瀏覽器

SELECT * FROM DocumentDbTest_Countries c 

但出乎意料的是,當我運行下面的SQL查詢,也找不到結果:

SELECT * FROM DocumentDbTest_Countries c where c.country = 'C24105130563' 

有人可以指導我,我在做什麼錯誤在上面的SQL查詢?我嘗試使用雙引號而不是單個,但無濟於事。

回答

0

找到它。它是因爲@符號存在於屬性中。

奇怪的是我使用DocumentDB SDK來插入數據,並且這些屬性中的@符號被插入。 :(

現在必須找到一種方法,從插入刪除@符號。

+0

能否請您發佈與DocumentDB SDK代碼示例 –

+0

當然@AravindRamachandran 我嘗試下面的XML轉換成JSON並保存到DocumentDB: 現在Newtonsoft.Json.JsonConvert.SerializeXmlNode默認將@添加到屬性中,將其保存到DocumentDB中,沒有任何問題/警告。但之後你無法搜索它。 :( – Deb

+0

明白了,請參閱下面的查詢中如何逃避@字符。 –

1

由於@是一個特殊的字符,你必須用字典般的[]操作符來逃避它。例如,運行查詢爲:?

SELECT * FROM DocumentDbTest_Countries c where c["@country"] = 'C24105130563'