Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie Ihre Erfahrungen mit dem PHP7 MongoDB-Treiber

Teilen Sie Ihre Erfahrungen mit dem PHP7 MongoDB-Treiber

藏色散人
藏色散人nach vorne
2020-09-30 14:56:482676Durchsuche

Dieser Artikel wurde von der PHP7Tutorial-Kolumne geschrieben, um die Erfahrungen mit der Verwendung des PHP7 MongoDB-Treibers mit Ihnen zu teilen. Ich hoffe, dass er Freunden in Not hilfreich sein wird!

Teilen Sie Ihre Erfahrungen mit dem PHP7 MongoDB-Treiber

php7 kann Mongodb nur mit dem Mongodb-Treiber steuern.

Verwenden Sie den Mongodb-Treiber, um eine Verbindung zur Datenbank herzustellen.

Als ich anfing, den Mongodb-Treiber zu verwenden, lehnte ich ab. Als ich mir die offizielle Dokumentation ansah, sah ich nur eine Reihe von Klassen und unverständlichen Mitgliedsmethoden. Nach langem Stöbern konnte ich keine Schlüsselwörter wie Suchen, Aktualisieren, Löschen usw. finden und sogar etwas kompliziertere wie Replikatsätze und Benutzerauthentifizierung waren nicht bekannt. Wie man eine Verbindung zur Datenbank herstellt.
Glücklicherweise fehlt die Dokumentation nicht ganz. Klicken Sie auf MongodbDriverManger::constructor und Sie sehen mehrere Konstruktionsparameter

  • $uri in der Form mongo://[host:port ,host:port, host:port]/[dbname]?[username=aa&password=bb&replicaSet=cc]
  • $uri 形如 mongo://[host:port,host:port,host:port]/[dbname]?[username=aa&password=bb&replicaSet=cc]
  • $uriOptions 就是上面?后面的那一串参数,可以写在这里
  • $driverOptions 其他选项比如默认的读写参数

MongodbDriver CURD操作

这就是是我一开始觉得这个驱动反人类的地方,文档里没有任何的find,update,delete等字眼,只有一个Command类和一个Query类
Query 类稍微好一些,提供了部分查询选项。
实际上,对Mongo数据库的所有操作,都可以通过Command类进行。而php的驱动文档对具体的 commandOptions 是不做介绍的。
正因为我是mongodb萌新,所以才会觉得这个驱动无比奇葩反人类,根本就无从下手。
我们使用这个驱动的关键,是用Command类构造一个commandOption
而这个commandOption需要我们从mongodb的官方文档中去了解
MONGODB MANUAL - Database Commands
所有的操作,数据增删改查,聚合排序,数据库状态,用户认证等等,都可以通过这些命令搞定。下面随便举几个例子

  • 连接数据库
$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

最有用的当然是 MongoDBBSONJavascriptMongoDBBSONObjectId ,分别是传入 javascript 脚本函数,和使用 mongodb 的ojectid。

异常 Exception

所有MongoDBDriver 产生的异常都可以用 MongoDBDriverExceptionException$uriOptions ist die Zeichenfolge nach ? was hier geschrieben werden kann

$driverOptions Andere Optionen wie Standard-Lese- und Schreibparameter

MongodbDriver CURD-Operation 🎜🎜Das bin ich. Zuerst hatte ich das Gefühl, dass dieser Treiber menschenfeindlich war. Es gab keine Wörter wie „Suchen“, „Aktualisieren“ oder „Löschen“ im Dokument. Es gab nur eine Befehlsklasse code>Abfrageklasse. 🎜Query-Klasse ist etwas besser und bietet einige Abfrageoptionen. 🎜Tatsächlich können alle Vorgänge in der Mongo-Datenbank über die Command-Klasse ausgeführt werden. In der PHP-Treiberdokumentation werden keine spezifischen commandOptions eingeführt. 🎜Gerade weil ich neu bei Mongodb bin, habe ich das Gefühl, dass dieser Treiber extrem seltsam und menschenfeindlich ist, und es gibt keinen Anfang. 🎜🎜Der Schlüssel zur Verwendung dieses Treibers besteht darin, die Command-Klasse zum Erstellen einer commandOption zu verwenden. 🎜🎜🎜Und diese commandOption erfordert, dass wir sie aus der offiziellen Dokumentation von mongodb verstehen 🎜🎜MONGODB-HANDBUCH – Datenbankbefehle🎜Alle Vorgänge, das Hinzufügen, Löschen, Ändern, Aggregationssortieren, Datenbankstatus, Benutzerauthentifizierung usw. von Daten können über diese Befehle ausgeführt werden. Hier sind ein paar Beispiele🎜🎜🎜Mit der Datenbank verbindenrrreee🎜🎜Bedingte Abfrage, Rückgabe bei Bedarfrrreee🎜🎜Datensätze ändern rrreee 🎜🎜Datensätze löschen, 🎜Limit kann nur 1 oder 0 sein! 🎜rrreee🎜🎜Daten einfügenrrreee🎜🎜Gruppierung, Sortierungrrreee🎜🎜Datenbankstatus lesen rrreee

Die nützlichste Hilfsklasse BSON🎜🎜 ist natürlich MongoDBBSONJavascript und MongoDBBSONObjectId, die in Javascript übergeben werden bzw. Skriptfunktion und Objekt-ID mit Mongodb. 🎜

Exception🎜🎜Alle von MongoDBDriver generierten Ausnahmen können mit MongoDBDriverExceptionException🎜 erfasst werden

Das obige ist der detaillierte Inhalt vonTeilen Sie Ihre Erfahrungen mit dem PHP7 MongoDB-Treiber. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen