Heim > Artikel > Backend-Entwicklung > Verwendung der PHP-Datenbankoperation mongodb
Dieser Artikel stellt hauptsächlich die Verwendung des PHP-Datenbankbetriebs mongodb vor. Er analysiert detailliert die Funktionen, die Installation, die grundlegenden Befehle, die Verwendung und die damit verbundenen Vorsichtsmaßnahmen in Form von Beispielen.
Die Details sind wie folgt:
In herkömmlichen Datenbanken müssen wir eine große Anzahl von SQL-Anweisungen schreiben, um Datenbankdaten zu verarbeiten, und beim Speichern unregelmäßiger Daten müssen wir beim Erstellen von Tabellen in herkömmlichen relationalen Tabellen verschiedene Felder verarbeiten Datenbanken scheinen auch etwas schwach zu sein, Mongo ist entstanden, und die breite Anwendung der Ajax-Technologie und die breite Akzeptanz des JSON-Formats machen Mongo auch näher an Entwickler.
Mongo-Einführung und Anwendungsszenarien
MongoDB ist eine dokumentenorientierte nicht-relationale Datenbank (NoSQL), die im JSON-Format gespeichert ist. Mongo DB implementiert objektorientiertes Denken (OO-Denken) sehr gut. In Mongo DB ist jeder Datensatz ein Dokumentobjekt. Der größte Vorteil von Mongo DB besteht darin, dass Entwickler für alle Datenpersistenzvorgänge keine SQL-Anweisungen manuell schreiben müssen und CRUD-Vorgänge einfach durch direktes Aufrufen von Methoden implementiert werden können.
Mongo kann in den folgenden Szenarien verwendet werden:
Speichern großer Daten mit geringem Wert
JSON- und Objekttypdaten
Website-Cache-Daten
Kommentar- und Unterkommentarklassen haben offensichtliche Zugehörigkeitsdaten
Multi-Server-Daten, das integrierte MapReduce kann problemlos eine globale Durchquerung realisieren.
Mongodb installieren und verwenden
Wir können die neueste Version von der offiziellen Website https://www.mongodb.org herunterladen / Stabile Version, Mongo wurde offiziell kompiliert und kann nach der Dekomprimierung verwendet werden. Alle Befehle befinden sich im bin-Verzeichnis.
Konfigurieren Sie zuerst die Datei mongo.conf vor der Verwendung
port=xxxxx //代表端口号,如果不指定则默认为 27017 dbpath=/usr/local/mongodb/db //数据库路径 logpath=/usr/local/mongodb/logs/mongodb.log //日志路径 logappend=true //日志文件自动累加,而不是覆盖 fork=ture //以守护进程方式创建
Sowohl Datenbanken als auch Datentabellen können direkt erstellt werden, d. h. ohne Umschalten. Direkt verwenden, verwenden Es wird sofort erstellt. Sie können JS-Skripte auch direkt in Mongo schreiben und ausführen. Wenn das Feld _id in Mongo nicht angegeben ist, fügt Mongo automatisch eines hinzu.
Verschiedene Befehle von Mongo
Die Befehle von Mongo sind die Essenz davon. Diese sehr komplexen Befehle werden zusammengestellt, um die Mongo-Abfrage zu vereinfachen . Brillant und effizient. Jede Tabelle in Mongo wird als Sammlung bezeichnet. Die Verwendung von Befehlen ähnelt der von MySQL. Sein Befehl besteht aus einer Methode (func()), einem Abfragekörper (geschrieben in {}) und einem Operator (beginnend mit $).
Grundlegende Befehle
show dbs //查看数据库 use dbname //切换到数据库 db.createCollection('collection') //创建数据表 db.collection.drop() //删除数据表 db.dropDatabase() //删数据库 db.collection.insert({data}) //插入数据 db.collection.find() //显示数据表内全部内容
Abfragetext
{key.attr.attr:value} //普通式 {key:{$ne|$gt|$gte|$lt|$lte|$in|$nin|$all:value}} //key满足 $oper value的值 {$or|$and|$not|$nor:[{key1:{$gt:value}},{key2:{$ne:value}}]} //用$oper同时限定key1,key2的条件 {key:{$mod{8,2}}} //取出key对8取余为2的值。 {key:{$exist:1}} //取出key列存在的值。 {key:{$type:String|Double|Array|Date|Object|Boolean|......}}//查询key类型为type的列 {key:{$regex:/pattern/}} //通过正则查询,效率较低 {$where:'this.attr.express.....'} //直接用where语句,二进制转为JS运算,较慢
find()-Methodenerweiterung
db.collection.find(query,{要取出的列:1,不需要的列:0}) db.collection.find(query).skip(跳过的行数).limit(限制信息条数); db.collection.find(query).explain() //与MYSQL的解释语句一样。 db.collection.remove(query,[justone]) //如不指定query,全部删除;[justone]默认为false意思是查询到多个,但只删一个。
Update-Anweisung
db.collection.update(query,{key:newvalue}) //注意:新值会覆盖旧值,即数据只剩下语句中定义的key db.collection.update(query, { $set:{key:newvalue}, $unset:{key:value}, $rename:{key:value}, $inc:{key:value}, ...... }, { multi:true, //改变所有符合条件的,默认为false upsert:true //没有的话刚添加,默认为false } )
Cursor
var cursorName=db.collection.fund(query,...)[.skip(num).limit(num)] //创建游标 cursorName.hasNext() //判断是否有下一个 printjson(cursorName.next()) //输出游标的下一个指向值 cursorName.forEach(function(Obj){process Obj}) //遍历操作游标
Index
db.collection.getIndexes() //查看索引 db.collection.ensureIndex({key:1/-1[,key.attr:1/-1]},{unique:1(是否唯一)},{sparse:1(是否非空)})// 添加正序/倒序索引 db.collection.dropIndex({key:1/2}) //删除索引 db.collection.reIndex() //重建用了很多出现杂乱的索引
MapReduce
MapReduce ist ein sehr leistungsfähiges Traversal-Operationstool, das in Mongo integriert ist um seine Map- und Reduce-Funktionen zu implementieren
db.runCommand( { mapReduce: collection, //要操作的数据表 map: function(){emit(key1,key2)}, //对key1和key2进行数据映射 reduce: function(key,value){}, //对key值和数据组value进行操作 out: <output>, query: <document>, sort: <document>, limit: <number>, finalize: <function>, scope: <document>, jsMode: <boolean>, verbose: <boolean> } )
Mehr und detailliertere Befehle finden Sie in der chinesischen Mongo-Community http://docs.mongoing.com/manual -zh/ gefunden.
Mongo-Benutzer, Datenimport und -export und Cluster
Benutzerverwaltung
MongoDB ist nicht Standardmäßig verfügbar. Aktivieren Sie die Autorisierung. Sie können beim Starten des Servers die Option --auth oder --keyFile hinzufügen, um die Autorisierung zu aktivieren. Wenn Sie eine Konfigurationsdatei verwenden, verwenden Sie die Einstellungen security.authorization oder security.keyFile.
MongoDB stellt seine eigenen Rollen bereit, von denen jede eine klare Rolle für einen allgemeinen Anwendungsfall bereitstellt. Zum Beispiel Rollen wie read, readWrite, dbAdmin und root. Wir verwalten Benutzer, indem wir Benutzer erstellen, Rollen erstellen und Benutzern verschiedene Rollen zuweisen/wiederverwenden.
Wenn Sie eine Rolle hinzufügen, müssen Sie zunächst eine Administratorrolle in der Admin-Datenbank hinzufügen und dann die Administratorrolle verwenden, um in jeder Bibliothek verschiedene Rollen hinzuzufügen.
use admin;(切换到admin数据库,对此库操作) db.createUser( { user: "username", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) use database; db.auth('username','passwd');用超级管理员用户登陆后,整个mongo数据库皆可存取。
Datenimport und -export
Wir verwenden mongos eigene Tools für den Import und Export, im mongo/bin Verzeichnis Als nächstes exportieren Sie am besten im CSV-Format, um den Datenaustausch zu erleichtern.
./mongoexport -d Datenname -c Tabellenname -f Schlüssel1, Schlüssel2 -q 'Abfrage' -o Ainname --csv//Daten exportieren, der Standard ist das JSON-Format
./mongoimport -d Datenname - c Tabellenname --type json --file ./path // Daten importieren, der Standard ist das JSON-Format
Mongo-Datenbankcluster
1. Option hinzufügen --replSet replname;
2. Stellen Sie eine Verbindung zu einem Mongod-Prozess auf dem Mongo-Client her, geben Sie die Admin-Datenbank ein und deklarieren Sie dann die Mongoconf-Variable:use admin; var rsconf={_id:'replname',members[{_id:0,host:'xxx'},{_id:1,host:'xxy'}]};3 . Verwenden Sie rs.initiatee (rsconf); um den Cluster zu initialisieren, legt Mongo automatisch die kleinere ID-Nummer als primär und andere Mongod-Prozesse als sekundär fest. 4. Stellen Sie eine Verbindung zum sekundären Prozess her und verwenden Sie die Funktion „slaveOk()“, um den Slave-Prozess zu initialisieren.
Betrieb der Mongo-Datenbank in PHP
Wir fügen zuerst die Mongo-Erweiterung zu PHP hinzu (siehe Methode: http://www.jb51.net). /article/96829.htm). Dann können wir die Funktionsbibliothek der Mongo-Klasse im Skript verwenden.不同于其他的类库只有一个核心类,mongo有四个类,分别是:
Mongo类,基础类,拥有连接、关闭连接、对全局数据库的操作方法。
mongoDB类,邮Mongo类通过selectDB()方法得到,拥有表级的操作方法。
MongoCollection类,一般由Mongo->dbname->collection或直接用MongoDB类和数据库名实例化得到,拥有对数据的基本操作。
MongoCursor类,由MongoCollection通过find()方法得到,拥有普通的游标遍历操作。
以下是一个典型的mongo操作:
$mongo=new Mongo(); $mongo->connect('host',port); $collection=$mongo->dbname->collection; $cursor=$collection->find(); $cursor->operate(); $mongo->close();
Das obige ist der detaillierte Inhalt vonVerwendung der PHP-Datenbankoperation mongodb. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!