2017-12-15 3 views
0

MongoAPIからRobo3tとAzure Portalを介して500の内部サーバエラーが発生しました。CosmosDBのMongoAPIやAzure Portalの "Data Explorer"経由で.find()を実行することはできません。

私はいくつかのサンプルレコードを挿入し、Azure Portalの "Data Explorer"またはMongoDB API経由のRobo3tで試してみたところ、すべてのレコードを見ることができませんでした。私がレコードを見ることができる唯一の方法は、まっすぐなdocumentDB .query() 'Select *'からです。

私は完全に接続したり、統計情報を表示したり、レコードを挿入したり、(Robo3tから)挿入した特定のレコードを表示できますが、すべてのレコードを表示したり、.find({})これは数日前にすべてうまくいきました。私は複数のネットワーク上の複数のデバイスからこれを試しました。

ドキュメントDBホストは443ポートで、Robo3tは10255ポート経由で接続されています。気付いたどちらのAPIにも違った接続をすることはできません。

私は通常、documentDB api経由で挿入しています。ここで

は、いくつかのスクリーンショットは、以下のとおりです。

db.getCollection('test').stats()

Inserting 2 of the same record

finding those 2 records

db.getCollection('test').find({})

Getting documents via documentDB query via node.js successfully pulling all records

Trying to find one of those documentDB query objects in Robot3t

Again

Unable to get anything via Data Explorer

答えて

1

問題はあなたが言及したものです、あなたはモンゴのAPIアカウントにDocumentDBのAPIを使用して文書を挿入しています。 Mongo APIアカウントは、Mongo対応のクライアント/ SDKでのみ使用されることを意図しています。

ポータルアプリケーションとサードパーティアプリケーションは、MongoDBプロトコルを使用してドキュメントを読み取っているため、DocumentDB API経由で保存したこれらのドキュメントには必須のMongoDB属性(たとえば "_id")がありません。 Mongoクライアントを使用して文書を挿入する場合、クライアントは必要なMongoDB属性がないことを確認します( "_id"識別子の場合はそれを自動生成します)。

find()コマンドを実行すると、必要なMongoDB属性(DocumentDB APIで挿入された属性)に準拠していないドキュメントがドライバで発生し、中断します。

DocumentDB APIを使用してやり取りする場合は、SQLアカウントを使用します。アプリケーションがMongoDBプロトコルを使用し、Mongoアカウントを使用する必要がある場合は、Mongo対応のクライアントを使用して文書を保管します。

類似ケースの場合another SO question

問題を解決するには、Mongo SDKを使用してMongo APIクライアント/アプリケーションを使用してコレクションを再作成し、ドキュメントのみを保存します。

+0

1つの小さな修正:コレクションを再作成することは役に立ちません。MongoDB API(APIはコレクションレベルで選択されていません)を使用して、新しいCosmos DBアカウントにする必要があります。 –

+0

ありがとう、マティアス。私はdocumentdbのドキュメントをよく見て、DBとのやりとりに際してより多くの機能を持つように見えましたが、MongoのAPIのクエリ機能や使いやすさは、新しい開発や更新がすべて予定されているようではないMongo APIのために。私は他の場所で提案されたように私は両方を使用できると思ったが、それは結局できないと思う。 –

+0

David、私が言ったのは、破損したデータを取り除くために、(Mongo APIアカウント内の)新しい空のコレクションを作成することです。そして、Mongo APIだけでドキュメントを保存してください。 –

関連する問題