Dans les bases de données traditionnelles, nous devons écrire un grand nombre d'instructions SQL pour exploiter les données de la base de données. De plus, lors du stockage de données irrégulières, le traitement des différents champs lors de la création de tables dans les bases de données relationnelles traditionnelles est également un peu faible. L'application généralisée de la technologie ajax et la large acceptation du format json rapprochent également mongo des développeurs.
Introduction à Mongo et scénarios d'application
MongoDB est une base de données non relationnelle orientée document (NoSQL) stockée au format json. Mongo DB implémente très bien la pensée orientée objet (pensée OO). Dans Mongo DB, chaque enregistrement est un objet Document. Le plus grand avantage de Mongo DB est que toutes les opérations de persistance des données ne nécessitent pas que les développeurs écrivent manuellement des instructions SQL et que les opérations CRUD peuvent être facilement implémentées en appelant directement des méthodes.
mongo peut être utilisé dans les scénarios suivants :
Stockage de données de grande taille et de faible valeur
Données json et de type objet
Données du cache du site Web
Commentaires et sous -les commentaires sont inclus Données de dépendance évidentes
Données multi-serveurs, son MapReduce intégré peut facilement réaliser une traversée globale.
Installer et utiliser mongodb
Nous pouvons télécharger la dernière version stable sur le site officiel https://www.mongodb.org/, mongo est officiellement compilé Oui, vous pouvez l'utiliser après décompression. Ses commandes sont toutes dans le répertoire bin.
Configurez d'abord le fichier mongo.conf avant utilisation
port=xxxxx //代表端口号,如果不指定则默认为 27017 dbpath=/usr/local/mongodb/db //数据库路径 logpath=/usr/local/mongodb/logs/mongodb.log //日志路径 logappend=true //日志文件自动累加,而不是覆盖 fork=ture //以守护进程方式创建
Les bases de données et les tables de données peuvent être créées directement, c'est-à-dire qu'elles peuvent être utilisées directement sans changer. . Ils peuvent également être écrits directement dans mongo. Le script js peut être exécuté directement si le champ _id n'est pas spécifié dans mongo, mongo en ajoutera automatiquement un.
Diverses commandes de mongo
Les commandes de mongo sont son essence. La collection de ces commandes très complexes rend la requête de mongo brillante et efficace. Chaque table dans mongo est appelée une collection. L'utilisation des commandes est similaire à MySQL. Basculez vers la base de données pour faire fonctionner directement chaque collection. Sa commande se compose d'une méthode (func()), d'un corps de requête (écrit en {}) et d'un opérateur (commençant par $).
Commandes de base
show dbs //查看数据库 use dbname //切换到数据库 db.createCollection('collection') //创建数据表 db.collection.drop() //删除数据表 db.dropDatabase() //删数据库 db.collection.insert({data}) //插入数据 db.collection.find() //显示数据表内全部内容
Corps de la requête
{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运算,较慢
Amélioration de la méthode find()
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意思是查询到多个,但只删一个。
instruction de mise à jour
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 } )
Curseur
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 est un outil d'opération de traversée très puissant intégré à mongo Pour l'utiliser, vous devez implémenter. it Les fonctions map et réduire
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> } )
Des commandes de plus en plus détaillées peuvent être trouvées dans la communauté chinoise mongo http://docs.mongoing.com/manual-zh/.
Utilisateurs Mongo, importation et exportation de données et clusters
Gestion des utilisateurs
MongoDB n'active pas l'autorisation par défaut. Vous pouvez ajouter l'option --auth ou --keyFile lors du démarrage du serveur pour activer l'autorisation. Si vous utilisez un fichier de configuration, utilisez les paramètres security.authorization ou security.keyFile.
MongoDB fournit ses propres rôles, chacun fournissant un rôle clair pour un cas d'utilisation courant. Par exemple, des rôles tels que read, readWrite, dbAdmin et root. Nous gérons les utilisateurs en créant des utilisateurs, en créant des rôles et en attribuant/recyclant différents rôles aux utilisateurs.
Lors de l'ajout d'un rôle, vous devez d'abord ajouter un rôle d'administrateur dans la base de données admin, puis utiliser le rôle d'administrateur pour ajouter différents rôles dans chaque bibliothèque.
use admin;(切换到admin数据库,对此库操作) db.createUser( { user: "username", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) use database; db.auth('username','passwd');用超级管理员用户登陆后,整个mongo数据库皆可存取。
Importation et exportation de données
Nous utilisons les propres outils de mongo pour l'importation et l'exportation. Dans le répertoire mongo/bin, il est préférable d'exporter au format csv pour faciliter l'échange de données.
./mongoexport -d dataname -c tablename -f key1,key2 -q 'query' -o ainname --csv//导出数据,默认为json格式 ./mongoimport -d dataname -c tablename --type json --file ./path //导入数据,默认为json格式
cluster de base de données mongo
Ajoutez l'option --replSet replname lors de l'ouverture de mongod;
Connectez-vous à un processus mongod sur le client mongo, entrez dans la base de données admin, puis déclarez la variable mongoconf :
use admin;
var rsconf={_id:'replname',members[{_id:0,host:'xxx'},{_id:1,host:'xxy' }]};
Utilisez rs.initiatee(rsconf); pour initialiser le cluster, Mongo définira automatiquement le plus petit numéro d'identification comme principal et les autres processus Mongod comme secondaires.
Connectez-vous au processus secondaire et utilisez la fonction slaveOk() pour initialiser le processus esclave.
Faire fonctionner la base de données mongo en PHP
Nous ajoutons d'abord l'extension mongo à php (voir PHP sous Linux pour la méthode). Ensuite, nous pouvons utiliser la bibliothèque de fonctions de classe mongo dans le script.
Contrairement aux autres bibliothèques de classes qui n'ont qu'une seule classe principale, mongo a quatre classes, à savoir :
La classe Mongo, la classe de base, possède des méthodes pour se connecter, fermer les connexions et faire fonctionner la base de données globale. .
Classe MongoDB, la classe Mongo est obtenue via la méthode selectDB() et possède des méthodes de fonctionnement au niveau de la table.
La classe MongoCollection est généralement instanciée par Mongo->dbname->collection ou directement en utilisant la classe MongoDB et le nom de la base de données. Elle a des opérations de base sur les données.
La classe MongoCursor, obtenue à partir de MongoCollection via la méthode find(), a des opérations de parcours de curseur ordinaires.
Ce qui suit est une opération mongo typique :
$mongo=new Mongo(); $mongo->connect('host',port); $collection=$mongo->dbname->collection; $cursor=$collection->find(); $cursor->operate(); $mongo->close();
Pour plus d'articles liés à l'installation et à l'utilisation de la base de données mongodb dans cdnoss PHP, veuillez faire attention au site Web PHP chinois !