In herkömmlichen Datenbanken müssen wir eine große Anzahl von SQL-Anweisungen schreiben, um Datenbankdaten zu verarbeiten. Darüber hinaus ist die Verarbeitung verschiedener Felder beim Erstellen von Tabellen in herkömmlichen relationalen Datenbanken etwas schwach Die weit verbreitete 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
Kommentare und Sub -Kommentare sind enthalten Offensichtliche Abhängigkeitsdaten
Multi-Server-Daten, das integrierte MapReduce kann problemlos eine globale Durchquerung realisieren.
Mongodb installieren und verwenden
Wir können die neueste stabile Version auf der offiziellen Website https://www.mongodb.org/ herunterladen. Mongo ist offiziell kompiliert. Ja, Sie können es nach der Dekomprimierung verwenden. Alle Befehle befinden sich im bin-Verzeichnis.
Konfigurieren Sie zuerst die Datei mongo.conf, bevor Sie sie verwenden.
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, dh sie können direkt verwendet werden, ohne dass ein Wechsel erforderlich ist Sie können auch direkt in Mongo geschrieben werden. Wenn das _id-Feld nicht in Mongo angegeben ist, fügt Mongo automatisch eines hinzu.
Verschiedene Befehle von Mongo
Die Sammlung dieser sehr komplexen Befehle macht Mongos Abfrage 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运算,较慢
Verbesserung der find()-Methode
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 it Die Map- und Reduce-Funktionen
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/.
Mongo-Benutzer, Datenimport und -export und Cluster
Benutzerverwaltung
MongoDB aktiviert standardmäßig keine 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 Verzeichnis mongo/bin exportieren Sie am besten im CSV-Format, um den Datenaustausch zu erleichtern.
./mongoexport -d dataname -c tablename -f key1,key2 -q 'query' -o ainname --csv//导出数据,默认为json格式 ./mongoimport -d dataname -c tablename --type json --file ./path //导入数据,默认为json格式
Mongo-Datenbankcluster
Fügen Sie beim Öffnen von Mongod die Option --replSet replname hinzu;
Stellen Sie eine Verbindung zu einem Mongod-Prozess auf dem Mongo-Client her, geben Sie die Admin-Datenbank ein und deklarieren Sie sie dann die Mongoconf-Variable:
use admin;
var rsconf={_id:'replname',members[{_id:0,host:'xxx'},{_id:1,host:'xxy' }]};
Verwenden Sie rs.initiatee(rsconf); um den Cluster automatisch zu initialisieren, und andere Mongod-Prozesse als sekundär.
Stellen Sie eine Verbindung zum sekundären Prozess her und verwenden Sie die Funktion „slaveOk()“, um den Slave-Prozess zu initialisieren.
Mongo-Datenbank in PHP betreiben
Wir fügen zunächst die Mongo-Erweiterung zu PHP hinzu (siehe PHP unter Linux für die Methode). Dann können wir die Funktionsbibliothek der Mongo-Klasse im Skript verwenden.
Im Gegensatz zu anderen Klassenbibliotheken, die nur eine Kernklasse haben, verfügt Mongo über vier Klassen, nämlich:
Die Mongo-Klasse, die Basisklasse, verfügt über Methoden zum Verbinden, Schließen von Verbindungen und zum Betreiben der globalen Datenbank .
MongoDB-Klasse: Die Mongo-Klasse wird über die Methode selectDB () abgerufen und verfügt über Operationsmethoden auf Tabellenebene.
Die MongoCollection-Klasse, die im Allgemeinen durch Mongo->dbname->collection oder direkt unter Verwendung der MongoDB-Klasse und des Datenbanknamens instanziiert wird, verfügt über grundlegende Operationen für Daten.
Die MongoCursor-Klasse, die von MongoCollection über die Methode find() abgerufen wird, verfügt über normale Cursor-Traversal-Operationen.
Das Folgende ist eine typische Mongo-Operation:
$mongo=new Mongo(); $mongo->connect('host',port); $collection=$mongo->dbname->collection; $cursor=$collection->find(); $cursor->operate(); $mongo->close();
Weitere Artikel zur Installation und Verwendung der Mongodb-Datenbank in cdnoss PHP finden Sie auf der chinesischen PHP-Website!