2017-08-02 25 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'の簡単なWeb検索では、あなたが始めなければならないことがすべてあります。 –

+0

@DavidMakogon私はクエリの基本的な例を見ているので、$ vが私を混乱させるものであると付け加えるべきでしょう。ほとんどの例でAzureが追加したような追加のメタデータはありません。私は質問に$ vを含めますか?たとえば、c。$ v.searchTerm?これはまた、エラーを投げるようです。助けてくれてありがとう!これについてのドキュメントがあれば、私はそれを読んで嬉しいです。私が見ているすべての例では、$ v、$ tが実際に意味するもの、またはそれが追加された理由については議論していないようです。申し訳ありませんが、これは私が間違っていることを理解しようとする初心者のミスです。 – dev53

+0

@ tydev53コレクションを作成し、Mongo APIを通してドキュメントを挿入しましたか? –

答えて

1

あなたがMongoと対話するためのORMであるMongooseを使用しているコメントで述べたように、 Mongo APIを使用してデータを挿入する場合は、Mongo APIを使用して、すべての$記号を使用してこのドキュメント形式をサポートするように作成されたデータを照会する必要もあります。

+0

ありがとうございました。 Mongooseを使用してDBにデータを挿入しているので、これを正しく理解していることを確認するだけです。これは$記号とすべての追加属性を追加していますか?そしてこの違いは、Azureの "Query Explorer"の中で照会することができないという私の問題を引き起こしている可能性があります。基本的には、データのクエリ方法を挿入するために使用しているAPIと一致する必要があると言っています。 – dev53

+0

あなたは近くです。 MongooseはMongoと通信するための単なるラッパーです。 Mongo APIは、$と属性を追加するものです。 SQL APIを使用してMongoデータを試してみることは頭痛になります。実際のMongoクエリーを使用する必要があります。私はこの時点でAzureのポータルにMongoクエリーエクスプローラがあるとは思わないが、別の方法でクエリを実行する必要があるだろう –

+0

ああ大丈夫だと思うよ!私はMongo Queryシェルを使用してクエリを実行することができたので、Mongoをどのように使用しているのかにかかわらず、SQL「Query Explorer」APIを使用するのは非互換でなければなりません。問題を説明し、私が間違っていたことを説明する時間をとってくれてありがとう。 – dev53

1

Jesseの助けを借りて、私は最終的にSQL「Query Explorer」APIを使用して自分のクエリを動作させることができました。

私はMongoDbのインスタンスを使用しているので説明したように、私はMongo Query APIを使用する必要があります。これはAzureで "Data Explorer" - > "New Mongo Query"を選択してアクセスできます。そこから...これに似たものを使用して値をテストして、すべてのSearchTermsを返し

{searchTerm: "test"} 

を検索することができます。

は、SQLクエリエクスプローラ

でそれを行うためにはどのようにSQLクエリエクスプローラで、いくつかの試行後に同じクエリを実行し、次の構文が動作しているようですエラーたかったです。

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

もっとも優れた解決策ではありませんが、効果があります。他の誰かがSQLクエリエクスプローラでmongodbをクエリしようとしていた場合に、これについて言及したかっただけです。

私はこの構文に慣れていませんでした。私が見つけたすべてのドキュメントは、このユニークなケースについて何も出てこなかったのです。

ありがとうございました。

関連する問題