Maison >développement back-end >tutoriel php >Utilisation de l'opération de base de données PHP mongodb

Utilisation de l'opération de base de données PHP mongodb

墨辰丷
墨辰丷original
2018-05-18 14:12:381770parcourir

Cet article présente principalement l'utilisation de l'opération de base de données PHP mongodb. Il analyse en détail les fonctions, l'installation, les commandes de base, l'utilisation et les précautions associées sous forme d'exemples.

Les détails sont les suivants :

Dans les bases de données traditionnelles, nous devons écrire un grand nombre d'instructions SQL pour faire fonctionner les données de la base de données, et lors du stockage de données irrégulières, le traitement de différents champs lors de la création de tables en relationnel traditionnel les bases de données sont également difficiles. Cela semble un peu faible, mongo est né, et la large application de la technologie ajax et la large acceptation du format json rendent également mongo plus proche 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
Les classes de commentaires et de sous-commentaires ont des données d'affiliation évidentes
Données multi-serveurs, son MapReduce intégré peut facilement réaliser une traversée globale.

Installation et utilisation de mongodb

Nous pouvons télécharger la dernière version sur le site officiel https://www.mongodb.org / Version stable, mongo a été officiellement compilé et peut être utilisé 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 sans commutation, ils peuvent être utilisés directement, il est créé lorsqu'il est utilisé. Vous pouvez également écrire des scripts js directement dans mongo et l'exécuter 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 en sont l'essence même. Ces commandes très complexes sont rassemblées pour faciliter les requêtes de mongo. . Brillant 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意思是查询到多个,但只删一个。

mise à jour Déclaration

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 intégré à mongo Un outil d'opération de traversée très puissant pour l'utiliser, vous devez implémenter ses fonctions de carte et de réduction

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. en mongo La communauté chinoise http://docs.mongoing.com/manual-zh/ peut être trouvée.

Utilisateurs Mongo, import et export de données et clusters

Gestion des utilisateurs

MongoDB n'est pas disponible par défaut Activer l'autorisation. 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(&#39;username&#39;,&#39;passwd&#39;);用超级管理员用户登陆后,整个mongo数据库皆可存取。

Importation et exportation de données

Nous utilisons les propres outils de Mongo pour l'importation et l'exportation, en mongo/ Dans le répertoire bin, il est préférable d'exporter au format csv pour faciliter les échanges de données.

./mongoexport -d dataname -c tablename -f key1,key2 -q 'query' -o ainname --csv//Exporter les données, la valeur par défaut est le format json
./mongoimport -d dataname - c tablename --type json --file ./path //Importer des données, la valeur par défaut est le format json

cluster de base de données mongo

Ajouter une option --replSet replname;

2. 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:&#39;replname&#39;,members[{_id:0,host:&#39;xxx&#39;},{_id:1,host:&#39;xxy&#39;}]};

3. Utilisez rs .initiatee(rsconf); pour initialiser le cluster, mongo définira automatiquement celui avec le plus petit numéro d'identification comme principal et les autres processus mongod comme secondaires.

4. Connectez-vous au processus secondaire et utilisez la fonction slaveOk() pour initialiser le processus esclave.

Opération base de données mongo en PHP

On ajoute d'abord l'extension mongo à php (voir la méthode : http://www.jb51.net /article/96829.htm). Ensuite, nous pouvons utiliser la bibliothèque de fonctions de classe mongo dans le script.

不同于其他的类库只有一个核心类,mongo有四个类,分别是:

Mongo类,基础类,拥有连接、关闭连接、对全局数据库的操作方法。
mongoDB类,邮Mongo类通过selectDB()方法得到,拥有表级的操作方法。
MongoCollection类,一般由Mongo->dbname->collection或直接用MongoDB类和数据库名实例化得到,拥有对数据的基本操作。
MongoCursor类,由MongoCollection通过find()方法得到,拥有普通的游标遍历操作。

以下是一个典型的mongo操作:

$mongo=new Mongo();
$mongo->connect(&#39;host&#39;,port);
$collection=$mongo->dbname->collection;
$cursor=$collection->find();
$cursor->operate();
$mongo->close();

相关推荐:

PHP下 Mongodb 连接远程数据库详解及案例

PECL方式安装php-mongodb扩展步骤详解

PHP+mongoDB数据库操作步骤详解

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn