PHP 데이터베이스 작업 mongodb 사용
이 글은 주로 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('username','passwd');用超级管理员用户登陆后,整个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:'replname',members[{_id:0,host:'xxx'},{_id:1,host:'xxy'}]};
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('host',port); $collection=$mongo->dbname->collection; $cursor=$collection->find(); $cursor->operate(); $mongo->close();
相关推荐:
위 내용은 PHP 데이터베이스 작업 mongodb 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

settings.json 파일은 사용자 수준 또는 작업 공간 수준 경로에 있으며 VSCODE 설정을 사용자 정의하는 데 사용됩니다. 1. 사용자 수준 경로 : Windows는 C : \ Users \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS IS /users//library/applicationsupport/code/user/settings.json, linux는 /home//.config/code/user/settings.json; 2. Workspace 수준 경로 : .vscode/settings project root 디렉토리

GO의 HTTP 로그 미들웨어는 요청 방법, 경로, 클라이언트 IP 및 시간 소모를 기록 할 수 있습니다. 1. http.handlerfunc를 사용하여 프로세서를 랩핑하고, 2. 다음에 전화하기 전후 시작 시간과 종료 시간을 기록하십시오. 전체 샘플 코드는 실행중인 것으로 확인되었으며 중소형 프로젝트를 시작하는 데 적합합니다. 확장 제안에는 상태 코드 캡처, JSON 로그 지원 및 요청 ID 추적이 포함됩니다.

TestHepdFinanotherAppTodeMineifTheissueiswithTheFileoredge.2

ustuzzleforrobusthtttprequestswithHeadSandtimeouts.2.parsehtMleffiallywithSymfonyDomcraWlerusingcsSelectors.3. handlejavaScript-heaVysitesByIntegratingPuppetErgateErgateEcpExec () TorenderPages.4.Resptobots.txt, AddDelays, andUsepoTecpexec () TorenderPages

YII의 마스터가 되려면 다음 기술을 마스터해야합니다. 1) YII의 MVC 아키텍처 이해, 2) Activerecordorm 사용에 능숙합니다. 3) GII 코드 생성 도구, 4) 마스터 YII의 검증 규칙, 5) 데이터베이스 쿼리 성능을 최적화하십시오. 이러한 기술의 학습과 실습을 통해 YII 프레임 워크 하의 개발 기능을 포괄적으로 개선 할 수 있습니다.

올바른 htmlinput 유형을 선택하면 데이터 정확도를 향상시키고 사용자 경험을 향상 시키며 유용성을 향상시킬 수 있습니다. 1. 텍스트, 이메일, 전화, 번호 및 날짜와 같은 데이터 유형에 따라 해당 입력 유형을 선택하여 자동으로 체크섬 및 키보드에 적응할 수 있습니다. 2. HTML5를 사용하여보다 직관적 인 상호 작용 방법을 제공 할 수있는 URL, 색상, 범위 및 검색과 같은 새로운 유형을 추가하십시오. 3. 자리 표시 자 및 필요한 속성을 사용하여 양식 충전의 효율성과 정확성을 향상 시키지만 자리 표시자는 레이블을 대체 할 수 없다는 점에 유의해야합니다.

VSCODE에서는 바로 가기 키를 통해 패널과 편집 영역을 빠르게 전환 할 수 있습니다. 왼쪽 탐색기 패널로 이동하려면 Ctrl Shift E (Windows/Linux) 또는 CMD Shift E (Mac)를 사용하십시오. ctrl` 또는 esc 또는 ctrl 1 ~ 9를 사용하려면 편집 영역으로 돌아갑니다. 마우스 작동과 비교할 때 키보드 단축키는 더 효율적이며 인코딩 리듬을 방해하지 않습니다. 다른 팁으로는 다음과 같습니다.

runthewindowsupdateTrouBleShootErviaSettings> 업데이트 및 보안> 문제 해결을 해소 적으로 문제를 해결합니다 .2
