3

Pythonスクリプトをpymongoの使用からmongoengineの使用に切り替えています。以前、私はこの電話を受けました:

client_count = db.command("serverStatus")["connections"]['current'] - 1

しかし、代わりにmongoengineのラッパーを使用して現在の接続数を取得したいと考えています。server-statusと mongoengine のドキュメントを調べたところ、サーバー変数をプルするための同等の呼び出しが見つかりませんでした。

mongoengine の ODM 機能を使用していて、冗長性を排除したいので、mongoengine に切り替えたいと考えています。

これに対する指針はありますか?正しい構文は何ですか? ありがとう。

当面は、正しいデータを取得するために pymongo を使用し、それ以外はすべて mongoengine を使用します。

4

2 に答える 2

6

Mongoengine に相当するものはないため、これを手動で呼び出す必要があります。pymongo をラップすると、接続レジスタからデータベースを取得して呼び出しを行うことができます。これを行う最も簡単な方法は、ドキュメント クラスを使用することです。

db = Document._get_db()
client_count = db.command("serverStatus")["connections"]['current'] - 1
于 2013-02-06T21:22:39.143 に答える
1

警告: 私はこれらの API のどちらもよく知りません。

ただし、mongoengine の依存関係を見ると、実際には pymongo の観点から実装されているため、それが pymongo に依存していることがわかります。

次に、接続ロジックの mongoengines 実装を見てみましょう: https://github.com/MongoEngine/mongoengine/blob/master/mongoengine/connection.py#L113 : 返される接続オブジェクトは、実際には pymongo 接続です。したがって、原則として、返された接続で pymongo 呼び出しを行うことができるはずです。したがって、実際には上記の呼び出しを引き続き使用できます。もちろん、mongoengine は接続の内部実装タイプを変更する可能性があるため、この時点で mongoengine のカプセル化に違反しています。

しかし、彼らのドキュメントを調べてみると、データベースのこの側面にアクセスする他の方法が見つからないため、おそらくこれが最も簡単な方法です。

于 2013-02-06T20:14:48.807 に答える