ホームページ  >  記事  >  バックエンド開発  >  PHPデータベース操作mongodbの使用法

PHPデータベース操作mongodbの使用法

墨辰丷
墨辰丷オリジナル
2018-05-18 14:12:381735ブラウズ

この記事では主にPHPデータベース操作mongodbの使い方をサンプル形式で詳しく紹介しています。

従来のデータベースでは、データベースのデータを操作するために大量の SQL ステートメントを記述する必要があり、不規則なデータを保存する場合、従来のリレーショナル データベースでテーブルを作成する際のさまざまなフィールドの処理も少し弱かったです。また、ajax テクノロジーの幅広い応用と json 形式の広く受け入れられたことにより、mongo が開発者に近づいています。

mongo の紹介と応用シナリオMongoDB は、json 形式で保存されるドキュメント指向の非リレーショナル データベース (NoSQL) です。 Mongo DB は、オブジェクト指向思考 (OO 思考) を非常にうまく実装しています。Mongo DB では、すべてのレコードが Document オブジェクトです。 Mongo DB の最大の利点は、すべてのデータ永続化操作で開発者が SQL ステートメントを手動で記述する必要がなく、メソッドを直接呼び出すことで CRUD 操作を簡単に実装できることです。

mongo は次のシナリオで使用できます:

ストレージの大きなサイズ、低価値のデータ

json およびオブジェクト型のデータ Web サイトのキャッシュ データ
コメントとサブコメントには明らかな所属データがある
マルチサーバー データ組み込みの MapReduce を使用すると、グローバル トラバーサルを簡単に実装できます。

mongodb をインストールして使用します Mongo は公式 Web サイト https://www.mongodb.org/ からダウンロードできます。すべてを解凍するとコマンドを使用できます。 bin ディレクトリ。

使用する前にまず mongo.conf ファイルを設定します

port=xxxxx         //代表端口号,如果不指定则默认为 27017 
dbpath=/usr/local/mongodb/db    //数据库路径
logpath=/usr/local/mongodb/logs/mongodb.log //日志路径
logappend=true        //日志文件自动累加,而不是覆盖
fork=ture         //以守护进程方式创建

データベースとデータテーブルは両方とも直接作成できます。つまり、使用時に作成され、js を記述することもできます。 mongo で _id フィールドが指定されていない場合は、mongo が自動的に追加します。

mongo のさまざまなコマンドmongo のコマンドは、mongo のクエリを素晴らしく効率的にするために集められたものです。 mongo の各テーブルはコレクションと呼ばれます。コマンドの使用方法は、データベースに切り替えて各コレクションを直接操作します。そのコマンドは、メソッド (func())、クエリ本体 ({} で記述)、および演算子 ($ で始まる) で構成されます。

基本コマンド

show dbs        //查看数据库
use dbname        //切换到数据库
db.createCollection('collection')  //创建数据表
db.collection.drop()     //删除数据表
db.dropDatabase()      //删数据库
db.collection.insert({data})   //插入数据
db.collection.find()     //显示数据表内全部内容

クエリ本体

{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()メソッドの拡張

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意思是查询到多个,但只删一个。

最新の声明

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 を使用するには、そのマップと機能を減らす。

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>
 }
)

さらに詳しいコマンドは、mongo の中国語コミュニティ http://docs.mongetting.com/manual-zh/ で見つけることができます。

mongo ユーザー、データのインポートとエクスポート、およびクラスター

ユーザー管理

MongoDB は、デフォルトでは認証を有効にしません。サーバーの起動時に --auth または --keyFile オプションを追加して、認証を有効にすることができます。構成ファイルを使用する場合は、security.authorization または security.keyFile 設定を使用します。

MongoDB は独自のロールを提供し、それぞれが一般的なユースケースに対して明確なロールを提供します。たとえば、read、readWrite、dbAdmin、root などのロールです。ユーザーの作成、ロールの作成、ユーザーへのさまざまなロールの割り当て/再利用によってユーザーを管理します。

ロールを追加するときは、まず管理データベースに管理者ロールを追加し、次に管理者ロールを使用して各ライブラリに異なるロールを追加する必要があります。

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数据库皆可存取。

データのインポートとエクスポート

インポートとエクスポートにはmongo/binディレクトリで、データ交換を容易にするためにcsv形式でエクスポートするのが最善です。

./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 データベース クラスター

1. オプション --replSet replname;

を追加します。2. mongo クライアントの mongod プロセスに接続し、admin と入力します。 mongod データベースを開くときに、mongoconf 変数を宣言します:

use admin;
var rsconf={_id:&#39;replname&#39;,members[{_id:0,host:&#39;xxx&#39;},{_id:1,host:&#39;xxy&#39;}]};

3. rs.initiatee(rsconf) を使用して、クラスターを自動的に初期化し、他の mongod プロセスを次のように設定します。二次的な。

4. セカンダリプロセスに接続し、slaveOk() 関数を使用してスレーブプロセスを初期化します。

PHP での mongo データベースの操作まず、php に mongo 拡張機能を追加します (メソッドを参照: http://www.jb51.net/article/96829.htm)。これで、スクリプト内で mongo クラス関数ライブラリを使用できるようになります。

不同于其他的类库只有一个核心类,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数据库操作步骤详解

以上がPHPデータベース操作mongodbの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。