티스토리 뷰
MongoDB 사용법
설치환경
- MacOS
- homebrew버전 : homebrew 1.3.2
- Ubuntu Version : Xenial (16.04 LTS)
- Apt Version : apt 1.2.24 (amd64)
- MongoDB Version : v3.4.9
MongoDB?
몽고DB는 데이터 객체들이 컬렉션 내부에서 독립된 문서로 저장되는, 문서 모델을 기반으로 하는 NoSQL 데이터베이스입니다.
MongoDB는 무료 오픈 소스 크로스 플랫폼 문서 지향 데이터베이스 프로그램입니다.
NoSQL 데이터베이스 프로그램으로 분류 된 MongoDB는 스키마와 함께 JSON과 유사한 문서를 사용합니다.
MongoDB는 MongoDB Inc.에 의해 개발되었으며 GNU Affero General Public License와 Apache License의 조합으로 발행됩니다.
출처 : [ https://en.wikipedia.org/wiki/MongoDB ]
NOSQL?
NoSQL 데이터베이스는 관계형 데이터베이스에서 사용되는 테이블 관계가 아닌 다른 방법으로 모델링 된 데이터의 저장 및 검색 메커니즘을 제공합니다.
이러한 데이터베이스는 1960 년대 후반부터 존재했지만 페이스 북, 구글, 아마존과 같은 웹 2.0 회사의 필요에 의해 촉발 된 21 세기 초반에 대중의 인기가 높아질 때까지 "NoSQL"이라는 별명을 얻지 못했습니다
NoSQL 데이터베이스는 대용량 데이터 및 실시간 웹 응용 프로그램에서 점점 더 많이 사용되고 있습니다. NoSQL 시스템은 SQL과 유사한 쿼리 언어를 지원할 수 있다는 점을 강조하기 위해 "Not only SQL"라고도합니다.
출처 : [ https://en.wikipedia.org/wiki/NoSQL ]
MongoDB install from MacOS
brew를 이용해 설치
brew search mongodb
brew install mongodb
설치가 정상적으로 완료 되었다면 version확인
mongod --version
MongoDB install from Linux(Ubuntu)
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo service mongod start
사용법
- console
mongoDB 접속
mongo OR mongod
mongoDB 데이터베이스 확인
show dbs
데이터 베이스 생성
use 데이터베이스명
예) use test
user 생성
db.createUser({user:"생성ID", pwd: "비밀번호", roles: [{role:"권한",db:"데이터베이스"}]});
예) db.createUser({user:"test", pwd:"test", roles: [{role:"readWrite", db:"test"}]});
user 조회
show users;
user 삭제
db.dropUser("유저ID");
예) db.dropUser("test");
컬렉션 생성
db.createCollection("컬렉션 명");
예) db.createCollection("people");
컬렉션 내의 데이터 조회
db.컬렉션명.find(); OR db.컬렉션명.find({});
예) db.people.find(); OR db.people.find({});
컬레션 내의 특정 데이터 조회
db.컬렉션명.find({필드명});
예) db.people.find({name:"test"});
_id를 제외한 조회
db.컬렉션명.find({}, {_id:false});
한 객체만을 조회
db.컬렉션명.findOne();
이 명령어는 가장 먼저 넣은 객체가 반환됩니다.
예) 1,2,3,4,5 순으로 데이터를 삽입했으면 db.컬렉션명.findOne()명령 실행 시 1이 반환, 최근 데이터가아님
데이터 정렬
db.컬렉션명.find().sort(조건);
예) db.people.find({}).sort({name:1});
정렬에서는 1이 오름차순, 0이 내림차순
데이터 삽입
db.컬렉션명.insert({필드명: "A", 필드명:"B"})
db.컬렉션명.save({필드명: "A", 필드명:"B"})
예) db.people.insert({name:"test", gender:"male"});
db.people.save({필드명: "A", 필드명:"B"});
save는 그대로 복사해서 넣게 된다.
예) db.people.save({name:"test"}); -> db.people.find(); 시 save부분은 name:"test"만 들어가게된다.
데이터 수정
db.컬렉션명.update({수정할 필드명: "A"}, {$set{필드명: "수정될 값" }})
예) db.people.update({name:"A"},{$set{gender:"female"}});
데이터 삭제
db.컬렉션명.remove({필드명: "값"});
예) db.people.remove({name:"A"});
- node
import * as mongodb from 'mongodb';
const MongodbClient: mongodb.MongoClient = mongodb.MongoClient;
// const url: string = 'mongodb://localhost:27017/moabase';
const url: string = 'mongodb://seonho:DBLab321**@203.230.100.61:27000/seonho';
// insertMany
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
const myObj = [
{name: 'lsw', gender: 'male'},
{name: 'syr', gender: 'female'},
{name: 'bjs', gender: 'female'},
];
db.collection('people').insertMany(myObj, (err: Error, res: any): void => {
if (err) throw err;
console.log('Number of documents inserted: ' + res.insertedCount);
db.close();
});
});
// insert
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
const query = {name: 'knj', gender: 'male'};
db.collection('people').insertOne(query, (err: Error): void => {
if (err) throw err;
console.log('1 document inserted');
db.close();
});
});
// findOne
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
db.collection('people').findOne({name: 'knj'}, ((err: Error, result: any): void => {
if (err) throw err;
console.log(result);
db.close();
}));
});
// findAll
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
db.collection('people').find({}).toArray((err: Error, result: any): void => {
if (err) throw err;
console.log(result);
db.close();
});
});
// findSome => username 이 'bhlee' 인 documents 조회
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
db.collection('people').find({name: 'knj'}).toArray((err: Error, result: any): any => {
if (err) throw err;
console.log(result);
db.close();
});
});
// findSome => documents 에서 username 만 포함해서 조회
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
db.collection('people').find({name: 'knj'}, {_id: false, name: true})
.toArray((err: Error, result: any): any => {
if (err) throw err;
console.log(result);
db.close();
});
});
// sort
// { username: 1 } // ascending
// { username: -1 } // descending
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
const mySort = {name: 1};
db.collection('people').find().sort(mySort).toArray((err: Error, result: any) => {
if (err) throw err;
console.log(result);
db.close();
});
});
//delete
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
const query = {name: 'knj'};
db.collection('people').deleteOne(query, (err: Error): void => {
if (err) throw err;
console.log('1 document deleted');
db.close();
});
});
deleteMany => delete starts with the letter "b":
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
const myQuery = {name: /^b/};
db.collection('people').deleteMany(myQuery, (err: Error, obj: any): void => {
if (err) throw err;
console.log(obj.result.n + ' document(s) deleted');
db.close();
});
});
// update
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
const query = {name: 'knj'};
const newValue = {$set: {name: 'knj2'}};
db.collection('people').updateOne(query, newValue, (err: Error, obj: any): void => {
if (err) throw err;
console.log(obj.result.nModified + ' document(s) updated');
db.close();
});
});
// updateMany => update starts with the letter "b":
MongodbClient.connect(url, (err: Error, db: any): void => {
if (err) throw err;
const myQuery = {name: /^b/};
const newValues = {$set: {name: 'bhlee3'}};
db.collection('people').updateMany(myQuery, newValues, (err: Error, obj: any): void => {
if (err) throw err;
console.log(obj.result.nModified + ' document(s) updated');
db.close();
});
});
'Database' 카테고리의 다른 글
ElephantSQL 사용 (0) | 2020.05.05 |
---|---|
MVCC 메커니즘 (0) | 2018.07.26 |