Mongoを操作するときに使用するPython APIを何度も行ってきました。私は風景の簡単な調査を行い、3つの主要な候補者を特定しました。
Django フレームワークを使用してコンテンツを多用した新しいWebサイトを設計している場合、どのAPIを選択し、その理由を教えてください。
MongoEngineは、Djangoを念頭に置いて特別に構築されたように見えます。 PyMongoはMongoの薄いラッパーのようです。 Djangoをフレームワークとして使用することで得られる抽象化の多くを失いますが、それは大きな力を持っています。 MingはPyMongoとMongoEngineの間の興味深い中間点を表していますが、私はそれを試乗する機会がありませんでした。
マイクが言うように、あなたはPyMongoを避けることはできません-他のすべてのインターフェースはその上に構築されます。これらの他のインターフェースは間違いなく不要です。 Djangoで使用されているようなORMは、SQLクエリとスキーマの作成、および結果セットのオブジェクトへの解析の複雑さを軽減するため、SQLを扱う場合に役立ちます。
ただし、PyMongoにはすでにカバーされています-クエリは便利でシンプルなAPIを通過し、MongoDBからの結果は既にオブジェクトです(まあ、Python-違いは同じです))。 MongoドキュメントをPythonオブジェクトで装飾する必要があります。SONマニピュレータをPyMongoに追加するのは簡単です。このアプローチの良い点は、PyMongoに直接コードを記述し、追加でスライドできることです。コードとPyMongoの間に新しいAPIを挿入しなくても、後で機能を使用できます。
残りは何ですか?スキーマの作成と移行は多少便利ですが、ほぼ同じようにアドホックで行われます。MongoDBの使用を検討している場合は、とにかく従来のSQLスタイルモデルから脱却したい可能性があります。また、完全にDjangoと互換性のあるMongoDB ORMがあった場合、それをいくらか活用できます。それより少ないものは、おそらくあなた自身のために作品を作成するでしょう。
PyMongoを直接使用して後悔することはありません。
最高の効率に興味があるなら、注目に値する最後のオプションの1つは、PyMongoの非同期バージョンです。ここでは http://github.com/fiorix/mongo-async-python-driver
MongoEngineとMingはどちらもPyMongoに依存しています-それらは単にその上にいくつかの素敵な機能を置きます。少なくともPyMongoで直接起動することをお勧めします。他のツールのいずれかを使用して問題が発生した場合、「内部」で何が起こっているのかを簡単に理解できます。とはいえ、私は非常に偏見があります;)。
Django-mongodb-engineを試してみてください。これはDjango-nonrelのバックエンドなので、DjangoのモデルとORMを引き続き使用できます。ただし、他のAPIほど完全ではありません。 http://www.allbuttonspressed.com/blog/Django/2010/05/MongoDB-backend-for-Django-nonrel-released
公式 Mongodbドキュメント は djongo について話します。 SQLクエリをmongodbクエリに変換することで機能します。
実行するのにDjango-nonrelは必要ありません。
すべてのネイティブDjango contribモジュール(例:admin、user、session)は変更せずに動作します。
MongoEngineはcontribモジュールを書き換える必要があり、最後に確認したところ、ネイティブのadminモジュールはMongoEngineで実行されていません。
既存のモデルもORM変換なしで実行されます。