PHP7 MongoDB ドライバーを使用した経験を共有してください

藏色散人
リリース: 2023-02-17 17:48:01
転載
2668 人が閲覧しました

この記事は、PHP7 チュートリアル コラムによって、PHP7 MongoDB ドライバーの使用体験を共有するために書かれたものです。困っている友人の役に立てば幸いです。

PHP7 MongoDB ドライバーを使用した経験を共有してください

#php7 は、mongodb を駆動するために Mongodb ドライバーのみを使用できます。

Mongodb ドライバーを使用してデータベースに接続する

Mongodb ドライバーを初めて使い始めたとき、私は拒否しました。公式ドキュメントを見てみると、クラスと意味不明なメンバーメソッドが並んでいるだけで、長時間閲覧しても検索、更新、削除などのキーワードや、少し複雑なキーワードさえ見つかりませんでした。レプリカセットやユーザー認証など、データベースへの接続方法が不明でした。
幸いなことに、ドキュメントが完全に不足しているわけではありません。Mongodb\Driver\Manger::constructor をクリックすると、## の形式でいくつかの構築パラメータ

  • $uri が表示されます。 #mongo: //[host:port,host:port,host:port]/[dbname]?[username=aa&password=bb&replicaSet=cc]
  • #$uriOptions
  • は上記です? 背後 パラメータの文字列はここに記述できます#$driverOptions
  • デフォルトの読み取りおよび書き込みパラメータなどのその他のオプション
  • MongodbDriver CURD 操作
ここで、このドライバーは人間に反していると最初に感じました。ドキュメントには、検索、更新、削除などの単語はありません。

Command

クラスと ## だけがありました。 #クエリクラス

Query クラスは少し優れており、いくつかのクエリ オプションを提供します。 実際には、Mongo データベース上のすべての操作は Command クラスを通じて実行できます。 PHP ドライバーのドキュメントでは、特定の commandOptions が紹介されていません。
私が mongodb を初めて使用するからこそ、このドライバーは非常に奇妙で反人間的であり、始める方法がないと感じています。
このドライバーを使用する上で重要なのは、Command クラスを使用して commandOption

そしてこの commandOption を使用する必要があることです。公式 mongodb から入手してください。ドキュメント内の
MONGODB マニュアル - データベース コマンド について学習してください。すべての操作、データの追加、削除、変更とクエリ、集計ソート、データベース ステータス、ユーザー認証などを行うことができます。これらのコマンドを通じて実行されます。以下にいくつかの例を示します。
データベースへの接続

$this->_conn = new MongoDB\Driver\Manager('mongodb://localhost:27017/test');
$this->_db = 'test';
// execute command.
function exec($opts) {
    $cmd = new MongoDB\Driver\Command($opts);
    $res =  $this->_conn->executeCommand($this->_db, $cmd);
    return $res->toArray();
}
ログイン後にコピー
  • 条件付きクエリ、必要に応じて返します
$cmd = [
    'find' => 'table', // collection表名
    'filter' => ['_id' => ['$gte' => 10, '$lt' => 20]],
    'projection' => ['name' => 1, 'email' => 1]
];
$res = $this-exec($cmd);
ログイン後にコピー
  • レコードの変更
$cmd = [
    'update' => 'table', // collection 表名
    'updates' => [
        ['q' => [_id => ['$lt' => 10]], 'u' => ['status' => 0], 'upsert'=>0,'multi'=>1],
        ['q' => [_id => ['$gte' => 10]], 'u' => ['status' => 1], 'upsert'=>0,'multi'=>1],
    ],
    'ordered' => 1, // 是否依次执行updates语句,true表示执行失败后继续后面的语句,false 表示一旦失败立即返回
]
ログイン後にコピー
  • レコードを削除します。
limit は 1 または 0 のみです。
  • $cmd = [
        'delete' => 'table', // collection 表名
        'deletes' => [
            ['q' => [_id => ['$lt' => 5]], 'limit' => 0], // 0表示所有,1表示删除1行
        ]
    ]
    ログイン後にコピー
    ログイン後にコピー
    データの挿入
$cmd = [
    'delete' => 'table', // collection 表名
    'deletes' => [
        ['q' => [_id => ['$lt' => 5]], 'limit' => 0], // 0表示所有,1表示删除1行
    ]
]
ログイン後にコピー
ログイン後にコピー
  • グループ化、並べ替え
$cmd = [
    'aggregate' => 'table', // collection 表名
    'pipeline' => [
        '$group' => 'class',
        '$sort' => 'score'
    ]
]
ログイン後にコピー
  • データベースのステータスの読み取り
$cmd = [
    'replSetGetStatus' => 1,
]
ログイン後にコピー
    補助クラス BSON
  • 最も便利なのは、もちろん
MongoDB\BSON\Javascript

MongoDB\BSON\ObjectId# です。 # # 、それぞれ JavaScript スクリプト関数を渡し、mongodb の objectid を使用します。

ExceptionMongoDBDriver によって生成されたすべての例外は、MongoDB\Driver\Exception\Exception

を使用してキャプチャできます。

以上がPHP7 MongoDB ドライバーを使用した経験を共有してくださいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート