Heim > Artikel > Backend-Entwicklung > Teilen Sie Ihre Erfahrungen mit dem PHP7 MongoDB-Treiber
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!
php7 kann Mongodb nur mit dem Mongodb-Treiber steuern.
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
其他选项比如默认的读写参数这就是是我一开始觉得这个驱动反人类的地方,文档里没有任何的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 表示一旦失败立即返回 ]
$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, ]
最有用的当然是 MongoDBBSONJavascript
和 MongoDBBSONObjectId
,分别是传入 javascript 脚本函数,和使用 mongodb 的ojectid。
所有MongoDBDriver 产生的异常都可以用 MongoDBDriverExceptionException
$uriOptions
ist die Zeichenfolge nach ? was hier geschrieben werden kann
$driverOptions
Andere Optionen wie Standard-Lese- und Schreibparameter 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 rrreeeMongoDBBSONJavascript
und MongoDBBSONObjectId
, die in Javascript übergeben werden bzw. Skriptfunktion und Objekt-ID mit Mongodb. 🎜MongoDBDriverExceptionException
🎜 erfasst werdenDas 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!