>  기사  >  데이터 베이스  >  MongoDB의 일반적인 작업에 대한 자세한 소개

MongoDB의 일반적인 작업에 대한 자세한 소개

零下一度
零下一度원래의
2017-07-03 16:40:451184검색

MongoDB는 C++ 언어로 작성되었으며 분산 파일 저장 기반의 오픈 소스 데이터베이스 시스템입니다. 부하가 높은 조건에서는 더 많은 노드를 추가하면 서버 성능을 보장할 수 있습니다. MongoDB는 웹 애플리케이션을 위한 확장 가능한 고성능 데이터 스토리지 솔루션을 제공하는 것을 목표로 합니다.

1. 추가, 삭제, 수정 및 확인

현재 데이터베이스의 모든 컬렉션을 확인합니다.

show collections 或使用
show tables

컬렉션을 만드는 방법에는 명시적 생성과 암시적 생성이 있습니다


显示创建可以使用命令 db.createCollection(“集合名称")
隐式创建可以使用命令 db.集合名称.insert({}),
指创建集合并同时向集合中插入数据,
例如:db.customer.insert({name:”jack”})

컬렉션에 문서 추가

db.collectionname.insert({}) 명령을 사용하세요. 예:

db.user1.insert({name:”jack”,age:20})

컬렉션에서 문서 삭제


使用命令 db.集合名称.remove({删除条件}),
不加删除条件为删除集合中的所有文档:
例如,删除c1集合中的所有文档 db.c1.remove() 
删除c1集合中name为user1的文档 db.c1.remove({name:”user1”})

컬렉션에서 문서 쿼리


db.集合名称.find({条件})
或者使用 
db.集合名称.findOne() 查询第一个文档

Document 컬렉션의 문서를 쿼리하고 특정 키 값을 반환합니다. ​​
쿼리 expressions 외에도 MongoDB는 몇 가지 추가 매개변수 옵션도 지원합니다.
일부 특정 필드 값만 반환하려는 경우:
연령 필드를 제외한 모든 필드 반환
db.user.find({},{age:0});

댓글을 제외한 태그=테니스의 모든 열 반환
db .posts.find({tags:'tennis'},{comments:0});

userid=16으로 이름 필드를 반환
db.user.find({userid:16},{name:1}) ;
{"_id":16,"name":"user16"}

x=john
db.things.find({x:"john"},{z:1})의 모든 z 필드를 반환합니다.

조건식(91eef5681cad6f0cc96f9adeb2931b45, >=,!=)을 사용하여 컬렉션의 문서를 쿼리합니다.
//보다 큼: 필드 > value
db.collection.find({field:{$ gt:value}});

//보다 작음: 필드 eb16075a2e731804de9b268022ca87dc= value
db .collection.find({field:{$gte:value}});

//작거나 같음: 필드 <= value
db.collection.find({field:{$lte:value }});

//같지 않음: field != value
db.collection.find({field:{$ne:value}});

컬렉션의 문서 쿼리, 통계(개수), 정렬( 정렬), 페이징(건너뛰기, 제한)


db.customer.count();
db.customer.find().count();
db.customer.find({age:{$lt:5}}).count();
db.customer.find().sort({age:1}); 降序-1
db.customer.find().skip(2).limit(3);
db.customer.find().sort({age:-1}).skip(2).limit(3);
db.customer.find().sort({age:-1}).skip(2).limit(3).count();
db.customer.find().sort({age:-1}).skip(2).limit(3).count(0);
db.customer.find().sort({age:-1}).skip(2).limit(3).count(1);

컬렉션 내 문서 쿼리
$all은 주로 쿼리 조건 중 하나가 포함되지 않는 한 배열의 포함 관계를 쿼리하는 데 사용됩니다.

$in을 반환하지 않습니다.

관계형 데이터베이스와 유사합니다.

$nin은 $in

$or의 반대입니다. 이는 관계형 데이터베이스의 OR과 동일하며

의 관계를 나타냅니다. , 이름이 user2 또는 age 3인 문서를 쿼리하려면 명령은 다음과 같습니다.
db .customer.find({$or:[{name:”user2”},{age:3}]})

$nor, 이는 다음을 의미합니다. 이름이 user2가 아니고 나이가 3 Document가 아닌지 쿼리하는 등 조건에 따라 특정 데이터를 필터링하는 경우 명령은 다음과 같습니다.

db.customer.find({$nor:[{name:”user2”},{ age:3}]})

$exists, 컬렉션에 특정 키가 있는 문서를 쿼리하는 데 사용됩니다. 또는 특정 키가 있는 문서가 없는 경우, 예를 들어 고객 컬렉션에 이름 키가 있는 모든 문서를 쿼리하는 데 사용됩니다.

db.customer.find({name:{$exists:1}})
$exists:1은 true를 의미하며, 이는 존재함을 의미합니다.
$exists:0은 false를 의미하며,

cursor가 없음을 의미합니다.

컬렉션의 문서 업데이트

구문: db.collection.update(criteria,objNew,upsert,multi)
매개변수 설명:
criteria: 설정에 사용됨
쿼리 조건의 개체 objNew: 업데이트 내용을 설정하는 데 사용되는 개체
upsert: 레코드가 이미 존재하면 업데이트하고, 그렇지 않으면 새 레코드를 추가하면 값은 0 또는 1입니다.
multi: 조건을 충족하는 레코드가 여러 개 있으면 모두 업데이트할지 여부는 값이 0 또는 1

참고 : 기본적으로 첫 번째 적격 레코드만 업데이트됩니다.

일반적으로 마지막 두 매개변수는 각각 0,1입니다. 즉,
db.collection.update(criteria,objNew,0,1)

user1이라는 문서를 변경합니다. 컬렉션에서 jack:

db.c1.update({name:"user1"},{name:"jack"})

$set는 키 값을 지정하는 데 사용됩니다. , 생성해 보세요. 예:

user1이라는 문서에 주소를 추가하려면 다음 명령을 사용할 수 있습니다.
db.c1.update({name:”user1”},{$set:{address:”bj”}},0,1 )
이름이 user1인 문서의 경우 주소는 tj로 수정되고 다른 키-값 쌍은 변경되지 않습니다. 명령은 다음과 같습니다.
db.c1.update({name:”user1”},{$set :{address:”tj”}}, 0,1)$inc를 사용하여 컬렉션의 user1이라는 나이에 1을 더하고 다른 키는 변경하지 않습니다.
$inc는 키에 지정된 값을 더하거나 빼는 것을 의미합니다. value

db.c1.update({name:" user1"},{$inc:{age:1}})


$unset은 특정 키를 삭제하는 데 사용됩니다. 예를 들어 문서에서 주소 키를 삭제하는 데 사용됩니다. user1이라는 이름을 가진 경우 다음 명령을 사용할 수 있습니다:
db.c1.update({ name:”user1”},{$unset:{address:1}},0,1)


2. 색인:

색인은 쿼리 속도를 높이는 데 사용됩니다. 데이터베이스 색인은 책 색인과 유사합니다. 색인을 사용하면 책 전체를 살펴볼 필요가 없지만 데이터베이스가 색인에서 직접 검색할 수 있으므로 검색 속도가 몇 배 더 빨라집니다. 색인에서 항목을 찾으면 대상 문서의 위치로 직접 이동할 수 있습니다.

일반 인덱스:
생성: db.collection.ensureIndex({key:1})
인덱스 관련 정보 보기: db.collection.stats()
인덱스의 쿼리 사용량 보기: db.collection.find( { key:value}).explain()
색인 삭제: db.collection.dropIndex({key:1})
컬렉션을 삭제하면 컬렉션의 모든 인덱스도 삭제됩니다.

고유 인덱스:
Create: db.collection. verifyIndex({key:1},{unique:true})
인덱스 관련 정보 보기: db.collection.stats()
인덱스를 사용하여 쿼리 보기: db.collection.find({key:value}). explain()
색인 삭제: db.collection.dropIndex({key:1})
컬렉션을 삭제하면 해당 컬렉션의 인덱스도 모두 삭제됩니다

3. Capped collection(캡핑 컬렉션)

고정 컬렉션이란 무엇을 의미하나요? 미리 생성되어 고정된 크기를 갖는 컬렉션입니다.

고정 컬렉션 기능: 고정 컬렉션은 링 큐와 매우 유사하며 공간이 부족하면 새 문서를 위한 공간을 확보하기 위해 가장 오래된 문서가 삭제됩니다. 일반적으로 고정 컬렉션은 너무 많은 운영 제한 없이 만료된 속성을 자동으로 제거하려는 모든 시나리오에 적합합니다.

고정 컬렉션 생성:
db.createCollection(“collectionName”,{capped:true,size:100000,max:100})
size는 컬렉션 크기를 KB 단위로 지정하고, max는 문서 수를 지정합니다.

지정할 때 문서 수량이 제한되면 크기도 지정해야 합니다. 제거 메커니즘은 용량이 가득 차지 않은 경우에만 문서 수에 따라 작동합니다. 용량이 가득 찬 경우 제거 메커니즘은 용량에 따라 작동합니다.

4. 백업(mongodump) 및 복구(mongorestore)

MongoDB는 MongoDB 다운로드 디렉터리에 있는 mongodump.exe 및 mongorestore.exe 파일(즉, mongodb bin에 있는 명령)인 백업 및 복구 기능을 제공합니다. )

다음 명령을 사용하여 데이터를 백업하세요.
mongodump -h dbhost -d dbname -o dbdirectory
-h: MongoDB 서버 주소(예: 127.0.0.1) 물론 포트 번호를 지정할 수도 있습니다. 127.0.0.1:27017
- d: 백업해야 할 데이터베이스 인스턴스. 예: test -o: 백업 데이터 저장 위치. 예: c:datadump 물론 이 디렉터리를 미리 생성해야 합니다. 백업이 완료되면 시스템은 자동으로 덤프 디렉터리에 테스트를 생성하며, 이
디렉터리는 데이터베이스 인스턴스의 백업 데이터를 저장합니다.

다음 명령을 사용하여 데이터를 복원하세요.

mongorestore -h dbhost -d dbname -directoryperdb dbdirectory

-h: MongoDB 서버 주소
-d: 복원해야 하는 데이터베이스 인스턴스입니다. 예: test, 물론 this test2
-directoryperdb와 같이 이름은 백업과 동일할 수도 있습니다. 백업 데이터의 위치(예: c:datadumptest

5) 가져오기(mongoimport) 및 내보내기(mongoexport)

To 데이터를 내보내려면 다음 명령을 사용할 수 있습니다:

mongoexport -h dbhost -d dbname -c collectionName -o 출력

매개변수 설명:
-h 데이터베이스 주소
-d 사용된 라이브러리를 지정합니다
-c 내보낼 컬렉션을 지정합니다
- o 내보낼 파일 이름을 지정합니다.

예:

mongoexport -h localhost: 27017 -d test -c c4 -o d:/beifeng/c4.txt


데이터를 가져오려면 다음 명령을 사용할 수 있습니다.

mongoimport -h dbhost -d dbname -c collectionname 파일의 주소...

매개변수 설명:
-h 데이터베이스 주소
-d는 사용할 라이브러리를 지정합니다.
-c는 가져올 컬렉션을 지정합니다.
로컬 파일 주소...

예:

mongoimport -h localhost:27017 -d test -c cctv d:/beifeng/c4.txt

위 내용은 MongoDB의 일반적인 작업에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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