2017-08-02 39 views
0

我在探索Azure CosmosDB,並且無法理解如何查詢我的集合。我創建了一個Web應用程序來添加和查詢數據,但我想在Azure中進行搜索,並且不知道如何構建我的查詢。Azure CosmosDB MongoDB如何查詢:查詢資源管理器

目前我查詢我的集合運行返回一切。

SELECT * FROM c 

這會返回很多信息。以下是數據外觀的一個示例。

{ 
    "$t": 3, 
    "$v": { 
     "searchTerm": { 
     "$t": 2, 
     "$v": "test" 
     }, 
     "searchDate": { 
     "$t": 9, 
     "$v": 1501606675858 
     }, 
     "_id": { 
     "$t": 7, 
     "$v": "Y³\u0013&Ò#\bø\u0005+ú" 
     }, 
     "__v": { 
     "$t": 16, 
     "$v": 0 
     } 
    }, 
    "id": "NTk4MGIzMTMyNmQyMjMwOGY4MDUyYmZh", 
    "_rid": "pR8YAPXxJQABAAAAAAAAAA==", 
    "_self": "dbs/pR8YAA==/colls/pR8YAPXxJQA=/docs/pR8YAPXxJQABAAAAAAAAAA==/", 
    "_etag": "\"020094b9-0000-0000-0000-5980b3130000\"", 
    "_attachments": "attachments/", 
    "_ts": 1501606672 } 

有沒有一種方法來查詢某個「searchTerm」(我的CosmosDB中的字段)。我似乎無法掌握語法來篩選我的查詢。我已經嘗試了一些在SQL中看起來合理的東西,但它們都不起作用。

感謝您的任何幫助。

+1

有一整套專門針對DocumentDB SQL查詢語言的Web文檔。我建議你從那裏開始。不幸的是,你所寫的問題本質上是對這樣的教程/學習內容的請求(或者是一般針對DocumentDB查詢的普遍問題)。快速搜索「documentdb sql」或「documentdb queries」應該爲您提供開始所需的一切。 –

+0

@DavidMakogon我看到了查詢的基本示例,所以也許我應該補充說$ v是令我困惑的東西。在大多數例子中,沒有Azure添加的額外元數據。我在查詢中包含$ v嗎?例如c。$ v.searchTerm?這似乎也會引發錯誤。謝謝你的幫助!如果有任何文件,我會很樂意閱讀它。看來,我看到的每個例子都沒有討論$ v,$ t的實際含義或者爲什麼添加。對不起,如果這是一個初學者的錯誤,只是試圖瞭解我做錯了什麼。 – dev53

+0

@ tydev53您是否通過Mongo API創建您的收藏集並插入文檔? –

回答

1

正如你在評論中所說的,你正在使用Mongoose,它是一個與Mongo交互的ORM。如果您使用Mongo API插入數據,您還需要使用Mongo API在您的數據生成時查詢數據,以支持包含所有$符號的此文檔格式。

+0

謝謝你的回答。只是爲了確保我正確理解這一點,因爲我正在使用Mongoose將我的數據插入到添加$符號和所有附加屬性的數據庫中?這種區別是什麼可能導致我無法在Azure「查詢瀏覽器」中查詢的問題。基本上你說我需要匹配我正在使用的API來插入我如何查詢數據。 – dev53

+0

你很近。 Mongoose只是與Mongo溝通的一個包裝。 Mongo API是'添加$和屬性的。使用SQL API來嘗試和檢索Mongo數據會很頭疼,你應該使用實際的Mongo查詢。我不相信現在在Azure門戶中有一個Mongo查詢瀏覽器,你必須以另一種方式執行你的查詢 –

+0

啊好吧,我想我明白了!我能夠使用Mongo Query shell進行查詢,因此它必須是使用SQL「Query Explorer」API與我如何使用Mongo的不兼容性。感謝您抽出時間來解釋問題以及我做錯了什麼。 – dev53

1

在Jesse的幫助下,我最終能夠使用SQL「Query Explorer」API查詢我的查詢。

正如他解釋說,因爲我使用的是MongoDb實例,所以我應該使用Mongo Query API,可以通過進入「數據資源管理器」 - >選擇您的集合 - >「新的Mongo查詢」在Azure中訪問。從那裏你可以搜索使用類似的東西...

{searchTerm: "test"} 

它返回所有searchTerms值的測試。

如何做到這一點隨着SQL查詢瀏覽器

我想要做的SQL查詢瀏覽器和一些嘗試後,相同的查詢和錯誤以下語法似乎工作。

select * 
from collection 
where collection["$v"].searchTerm["$v"] = "test" 

不是最漂亮的解決方案,但它的工作。只是想提一下,以防別人試圖用SQL Query Explorer查詢他們的mongodb。

我對這個語法並不熟悉,我能找到的所有文檔都沒有提到這個獨特的例子。

謝謝。