>  기사  >  백엔드 개발  >  PHP 데이터베이스 작업 mongodb 사용

PHP 데이터베이스 작업 mongodb 사용

墨辰丷
墨辰丷원래의
2018-05-18 14:12:381745검색

이 글은 주로 PHP 데이터베이스 운용 mongodb의 사용법을 소개하고 있으며, MongoDB의 기능, 설치, 기본 명령어, 사용방법, 관련 주의사항 등을 예시 형태로 자세히 분석하고 있습니다.

자세한 내용은 다음과 같습니다.

기존 데이터베이스에서는 데이터베이스 데이터를 조작하기 위해 수많은 SQL 문을 작성해야 하고, 불규칙한 데이터를 저장할 때 기존 관계형 데이터베이스에서 테이블을 생성할 때 다양한 필드의 처리도 약간 약해졌습니다. Ajax 기술의 폭넓은 적용과 json 형식의 폭넓은 수용으로 인해 mongo는 개발자에게 더 가까워졌습니다.

mongo 소개 및 적용 시나리오

MongoDB는 json 형식으로 저장되는 문서 중심의 비관계형 데이터베이스(NoSQL)입니다. Mongo DB는 객체 지향적 사고(OO 사고)를 매우 잘 구현합니다. Mongo DB에서는 모든 레코드가 Document 객체입니다. Mongo DB의 가장 큰 장점은 모든 데이터 지속성 작업에서 개발자가 SQL 문을 수동으로 작성할 필요가 없으며, 메소드를 직접 호출하여 CRUD 작업을 쉽게 구현할 수 있다는 점입니다.

mongo는 다음 시나리오에서 사용할 수 있습니다.

저장 용량이 크고 가치가 낮은 데이터
json 및 개체 유형 데이터
웹사이트 캐시 데이터
댓글과 하위 댓글에 명백한 소속 데이터가 있음
다중 서버 데이터 , 내장된 MapReduce를 사용하면 전역 순회를 쉽게 구현할 수 있습니다.

mongodb 설치 및 사용

공식 웹사이트 https://www.mongodb.org/에서 최신 안정 버전을 다운로드할 수 있습니다. Mongo는 공식적으로 압축 해제 후 명령을 사용할 수 있습니다. 빈 디렉토리.

사용하기 전에 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의 쿼리를 훌륭하고 효율적으로 만듭니다. mongo의 각 테이블을 컬렉션이라고 합니다. 명령의 사용은 MySQL과 유사하며 각 컬렉션을 직접 운영하려면 데이터베이스로 전환해야 합니다. 해당 명령은 메서드(func()), 쿼리 본문({}로 작성) 및 연산자($로 시작)로 구성됩니다.

기본 명령

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

Query body

{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는 mongo에 내장된 매우 강력한 순회 작업 도구입니다. 이를 사용하려면 해당 맵과 축소 기능을 구현해야 합니다.

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.mongoing.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의 자체 도구를 사용하여 가져오기 및 내보내기를 수행합니다. mongo/bin 디렉터리에서는 데이터 교환을 용이하게 하기 위해 csv 형식으로 내보내는 것이 가장 좋습니다.

./mongoexport -d 데이터 이름 -c 테이블 이름 -f key1,key2 -q 'query' -o ainname --csv//데이터 내보내기, 기본값은 json 형식입니다.
./mongoimport -d 데이터 이름 -c 테이블 이름 --type json --file ./path //데이터 가져오기, 기본값은 json 형식

mongo 데이터베이스 클러스터

1입니다. --replSet replname;

2 옵션을 추가하고 mongo 클라이언트에서 admin을 입력합니다. 그런 다음 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)를 사용하여 클러스터를 초기화합니다. Mongo는 자동으로 더 작은 ID 번호를 기본으로 설정하고 다른 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.