2017-11-08 15 views
4

UPDATEMongoDBの配列はソート

CosmoDBチームは彼らの言った上問題があることが確認されCosmoDBで働いていないと、彼らはすでに修正に取り組んでいます。ここのコメント欄で

さらに詳しい情報:https://docs.microsoft.com/en-us/azure/cosmos-db/mongodb-introduction

元の質問

我々はCosmoDBへの移行を計画しているが、我々は、$ sortコマンドで問題を発見しました。このクエリを実行している当社の現在のMongoDBサーバで :

db.getCollection('Product').find({ 
"ProductTypeId" : ObjectId("5913546b1ba88338e4347641"), 
"SubtypeIngredients" : "5949852c1ba88344d0facbf5" 
}) 
.skip(0).sort({ "IngredientRanks.2.Rank" : 1 }).limit(1) 

我々はいくつかの結果を得るが、CosmoDBで同じクエリを実行しているときに我々は結果を得ることはありません。

私は、クエリからのsortコマンドを削除した場合、私はCosmoDBから結果を得る

コレクション内のデータは、当社のローカルDBとCosmoDBでも同じです。

ご協力いただければ幸いです。 ありがとう!

アップデート:ここで

は、問題を示す実際のクエリのスクリーンショットです。

enter image description here

+0

私はあなたのデータが同じであることを正直に疑う。 .count()を実行して、数字が最初に一致するかどうか確認してください。並べ替えはデータをフィルタリングせず、どちらも空のフィルタドキュメントではありません。 – dnickless

+0

@dnickless私はクエリと結果でいくつかのスクリーンショットを添付しました。 –

+2

私は、実際には答えていないが、重要な点に対処しているだけで、私が知っている、ちょうど追加された答えと一般的な合意になる傾向があります。 CosmosDBはMongoDBではありませんが、MongoDB用に書かれたドライバはクエリを接続して実行することができるという点で、ワイヤプロトコルと互換性があるだけであると主張しています。しかし、これは実際には「まったく別のもの」であるとは変わりません。したがって、一般的な推奨は1です。CosmosDBを使用する場合は、互換性の主張ではなく、独自のネイティブAPIを使用します。 2. MongoDB APIに書かれたコードを「設計通りに」動作させたい場合は、代わりにMongoDBを使用します。 –

答えて

0

CosmoDBは、すべての事業者とのMongoDBの機能、(など、sortskipの連鎖のような)APIの特に非自明な使用をサポートして具体的な保証はありません。これはインデックスの最適化と選択にも拡張されます。

+0

ご返信ありがとうございます。 「MongoDBとの互換性:既存のMongoDBの専門知識、アプリケーションコード、およびツールを使用することができます.MongoDBを使用してアプリケーションを開発し、完全に管理されたCosmos DBサービスを使用してプロダクションに展開できます。私はMongoDBのようにすべてがうまく動作していなかったのですが、 "先進の"機能を使用していないので試してみたかったので...このシンプルなソートのために移行できませんでしたCosmoDB :( –

+0

他人を助ける+1を与えることを恥ずかしがります。 –

+0

私はMSの回答をhttps://docs.microsoft.com/en-us/azure/cosmos-db/から得ています。 mongodb-introduction。彼らはすでに彼らが修正している問題だと言った。 –