> 백엔드 개발 > PHP 튜토리얼 > MongoDB 팁 및 예방 조치 요약

MongoDB 팁 및 예방 조치 요약

小云云
풀어 주다: 2023-03-17 17:34:01
원래의
1301명이 탐색했습니다.

C++ 언어로 작성된 분산 문서 저장 데이터베이스인 Mongodb는 웹 애플리케이션을 위한 확장 가능한 고성능 데이터 저장 솔루션을 제공하는 것을 목표로 합니다. MongoDB는 현재 인기 있는 NoSQL 데이터베이스인 고성능 오픈 소스 스키마 없는 문서 데이터베이스입니다. 이 기사에서는 MongoDB를 사용하면서 직면하는 문제에 대한 해결 기술을 공유하고 참고 및 학습을 위해 공유합니다.

1. 배열 필드가 비어 있지 않은 레코드를 찾습니다.

데이터에서 배열 필드가 비어 있지 않은 레코드를 찾습니다.

예: 다음과 같은 Mongo 문서가 있습니다.

{
 "id" : "581c060f2b436c05aafb1632",
 "commit_history" : [ 
 "581c20d52b436c05aafb1633", 
 "581c21c12b436c05aafb1634"
 ]
},
{
 "id" : "581c060f2b436c05aafb1633",
 "commit_history" : []
}
로그인 후 복사

commit_history가 비어 있지 않은 레코드를 찾으려면 다음 방법이 있습니다.

방법 1: db.collection.find({commit_history: {$not : {$크기: 0}}})

방법 2: db.collection.find({'commit_history.0': {$exists: 1}})

2. MongoDB에 사용자 추가

MongoDB의 컬렉션에 사용자를 추가하려면 다음을 수행하세요.

특정 라이브러리로 collection_name 스위치를 사용하세요

db.createUser(
 {
 user: "collection_name",
 pwd: "password",
 roles: [ "readWrite", "dbAdmin" ]
 }
)
로그인 후 복사

3. 지정된 필드의 열에 대해서는 업데이트 작업을 사용하세요.

예를 들어 이름 열을 삭제하려면:

query json:

{"name":{$exists:true}}
로그인 후 복사

update json:

{$unset:{"name":""}}
로그인 후 복사

넷째, 데이터 내보내기, mongodb의 bin 디렉터리에서 mongoexport 명령을 실행하고 관련 매개 변수를 설정합니다.

예:

./mongoexport -h 192.168.0.201 --port 27017 –d admin –u admin –p admin -c department -o /home/admin/department.dat
로그인 후 복사

-h: 연결할 데이터베이스의 IP를 지정합니다.

--port: 연결할 데이터베이스의 포트를 지정합니다.

-u: 연결할 데이터베이스의 사용자 이름을 지정합니다. -p: 연결할 데이터베이스를 지정합니다.

-d: 연결할 라이브러리 이름을 지정합니다.

-c: 내보낼 데이터 컬렉션을 지정합니다. 내보낼 데이터

참고: (1) 연결된 데이터베이스가 정상적으로 작동하는지 확인해야 합니다.

             (2) 데이터베이스에 사용자 정보가 추가되었는데 시작 시 사용자 인증으로 시작되지 않는 상황이 발생했는데, 이 명령을 실행하면 사용자 이름과 비밀번호를 지정한 후에야 내보내기가 성공했습니다. .. 비슷한 상황에 처한 사람이 있다면 시도해 보는 것이 좋습니다.


5. 데이터 가져오기, mongodb의 bin 디렉터리에서 mongoimport 명령을 실행하고 관련 매개 변수를 설정합니다. 매개 변수 설명은 위와 동일합니다.

예:

./mongoimport --port 27017 -d admin -u admin –p admin –c department /home/common/mongodb305/bin/department.dat
로그인 후 복사

6. 비-사용자 인증 문제 amdin 데이터베이스:


us mongodb 데이터베이스의 라이브러리에 사용자를 추가하려면 대상 데이터베이스에서 다음 명령을 사용할 수 있습니다. 예를 들어 mongoTest 라이브러리에 읽기 및 쓰기 권한이 있는 사용자를 추가합니다.

db.createUser({"user":"test","pwd":"123456","roles":["readWrite"]})
로그인 후 복사

관리자 데이터베이스에 추가할 수도 있습니다:

db.createUser({"user":"test","pwd":"123456","roles":[{"role":"readWrite","db":"test"},"readWrite"]})
로그인 후 복사

이 두 가지 방법에는 차이가 있으며 한때 나를 속인 것은 바로 이 차이점입니다.


첫 번째 방법을 사용하여 추가할 때 , mongodb의 bin 디렉토리에서 다음을 직접 실행할 수 있습니다. 이 명령은 테스트 데이터베이스에 들어가서 이 사용자를 작동, 추가, 삭제, 쿼리할 수도 있습니다. 이름과 비밀번호는 mongoVUE에 연결되어 있습니다:

./mongo -h 192.168.0.201 --port 27017 -u test -p 123456 -d test
로그인 후 복사

그러나 두 번째 방법으로 생성한 경우 위 명령을 직접 사용하면 mongo를 먼저 입력할 때만 확인에 실패했다는 메시지가 표시됩니다. 쉘은 admin 데이터베이스에 연결되어 있으며, 이후 테스트 데이터베이스로 전환 시 검증을 통과할 수 있습니다. 이것은 작은 함정입니다. 상황을 모르는 사람들은 매우 혼란 스러울 수 있습니다. 사용자 이름과 비밀번호는 분명하지만 어떤 이유로 연결할 수 없습니다.


7. mongodb3.0의 기본 데이터 저장 방법은 여전히 ​​mongodb 2.6과 동일합니다. 새로운 저장 방법으로 변경하고 시작 시 다음 매개변수를 사용해 보았습니다. 그렇지 않으면 오류가 보고됩니다.

./mongod -f /mongodb304/conf/mongodb.conf --storageEngine wiredTiger
로그인 후 복사

mongodb.conf는 dbpath, logpath 등과 같은 다양한 시작 매개변수로 구성됩니다.

위 내용은 MongoDB를 일상적으로 사용하기 위한 팁과 주의사항을 요약한 내용입니다. 모든 분들께 도움이 되기를 바랍니다.


관련 권장 사항:

mongoDB 데이터베이스란 무엇입니까?

phpstudy는 MongoDB를 어떻게 확장합니까?

MongoDB의 보안을 향상하는 방법

위 내용은 MongoDB 팁 및 예방 조치 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿