• 회원가입
  • 로그인
  • 구글아이디로 로그인

[mongodb] Node.js - MongoDB Find (데이터 찾기)

6,809  
목차
  1. collection에서 1개 데이터 찾기 - findOne() 메서드
  2. collection에서 여러 데이터 가져오기 - find() 메서드
  3. 일부 컬럼의 데이터만 가져오기
  4. projection 예제1 - _id, mb_name 컬럼만 출력
  5. projection 예제2 - mb_name만 출력
  6. projection 예제3 - mb_name, mb_level 컬럼 출력
  7. projection 예제4 - 에러 발생 경우
  8. result 객체
  9. 데이터 출력 개수 제한 - limit(n) 메서드

 

 

MongoDB :  find / findOne 메서드 사용해 컬렉션에서 데이터 찾음.
cf. MySQL : SELECT 구문 사용해, 테이블에서 데이터 찾음 .
 

collection에서 1개 데이터 찾기 - findOne() 메서드

1. C:\User\사용자명\hz.js 생성.

 

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/";

const options = {useUnifiedTopology: true}; 


MongoClient.connect(url, options, function(err, db) {

  if (err) throw err;

  var dbo = db.db("hz");

  dbo.collection("hz_member").findOne({}, function(err, result) {

    if (err) throw err;

    console.log(result.mb_name);

    db.close();

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

homzzang 

 

 

collection에서 여러 데이터 가져오기 - find() 메서드

 

MongoDB의 테이블에서 데이터를 선택하려면 find() 메서드 사용 가능.


이 find()메서드는 선택 항목의 모든 항목을 반환.


find()메서드의 첫 번째 매개변수 는 쿼리 객체임. 

이 예에서는 컬렉션의 모든 문서를 선택하는 빈 쿼리 개체를 사용.


find() 메서드에 매개변수가 없으면 MySQL의 SELECT * 와 동일한 결과가 제공 안 됨.

 


1. C:\User\사용자명\hz.js 생성.

 

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/";

const options = {useUnifiedTopology: true}; 


MongoClient.connect(url, options, function(err, db) {

  if (err) throw err;

  var dbo = db.db("hz");

  dbo.collection("hz_member").find({}).toArray(function(err, result) {

    if (err) throw err;

    console.log(result);

    db.close();

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[

  {

    _id: 5f69a097cce10730bc488442,

    mb_name: 'homzzang',

    mb_level: '10'

  },

  { _id: 5f69a0b62671242f44d42a96, mb_name: 'AAA', mb_level: '1' },

  { _id: 5f69a0b62671242f44d42a97, mb_name: 'BBB', mb_level: '2' },

  { _id: 5f69a0b62671242f44d42a98, mb_name: 'CCC', mb_level: '2' },

  { _id: 5f69a0b62671242f44d42a99, mb_name: 'DDD', mb_level: '3' },

  { _id: 5f69a0b62671242f44d42a9a, mb_name: 'EEE', mb_level: '3' },

  { _id: 5f69a0b62671242f44d42a9b, mb_name: 'FFF', mb_level: '3' },

  { _id: 5f69a0b62671242f44d42a9c, mb_name: 'GGG', mb_level: '4' },

  { _id: 5f69a0b62671242f44d42a9d, mb_name: 'HHH', mb_level: '4' },

  { _id: 5f69a0b62671242f44d42a9e, mb_name: 'III', mb_level: '4' },

  { _id: 5f69a0b62671242f44d42a9f, mb_name: 'JJJ', mb_level: '4' },

  { _id: 5f69a0b62671242f44d42aa0, mb_name: 'KKK', mb_level: '5' },

  { _id: 5f69a0b62671242f44d42aa1, mb_name: 'LLL', mb_level: '5' },

  { _id: 5f69a0b62671242f44d42aa2, mb_name: 'MMM', mb_level: '5' },

  { _id: 5f69a0b62671242f44d42aa3, mb_name: 'NNN', mb_level: '5' },

  { _id: 5f69a101dd216c03b8e71364, mb_name: 'AAA', mb_level: '1' },

  { _id: 5f69a101dd216c03b8e71365, mb_name: 'BBB', mb_level: '2' },

  { _id: 5f69a101dd216c03b8e71366, mb_name: 'CCC', mb_level: '2' },

  { _id: 5f69a101dd216c03b8e71367, mb_name: 'DDD', mb_level: '3' },

  { _id: 5f69a101dd216c03b8e71368, mb_name: 'EEE', mb_level: '3' },

  { _id: 5f69a101dd216c03b8e71369, mb_name: 'FFF', mb_level: '3' },

  { _id: 5f69a101dd216c03b8e7136a, mb_name: 'GGG', mb_level: '4' },

  { _id: 5f69a101dd216c03b8e7136b, mb_name: 'HHH', mb_level: '4' },

  { _id: 5f69a101dd216c03b8e7136c, mb_name: 'III', mb_level: '4' },

  { _id: 5f69a101dd216c03b8e7136d, mb_name: 'JJJ', mb_level: '4' },

  { _id: 5f69a101dd216c03b8e7136e, mb_name: 'KKK', mb_level: '5' },

  { _id: 5f69a101dd216c03b8e7136f, mb_name: 'LLL', mb_level: '5' },

  { _id: 5f69a101dd216c03b8e71370, mb_name: 'MMM', mb_level: '5' },

  { _id: 5f69a101dd216c03b8e71371, mb_name: 'NNN', mb_level: '5' },

  { _id: 101, mb_name: 'OOO' },

  { _id: 102, mb_name: 'PPP' },

  { _id: 103, mb_name: 'QQQ' }

]

 

 

일부 컬럼의 데이터만 가져오기

 

1.

find()메서드의 두 번째 매개변수 projection는 결과에 포함할 필드를 설명하는 객체임. 

 

2.

이 매개 변수는 선택 사항이며 생략하면 모든 필드가 결과에 포함.

 

[예제]


1. C:\User\사용자명\hz.js 생성.

 

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/";

const options = {useUnifiedTopology: true};

 

MongoClient.connect(url, options, function(err, db) {

  if (err) throw err;

  var dbo = db.db("hz");

  dbo.collection("hz_member").find({}, { projection: { _id: 0, mb_name: 1, mb_level: 1 } }).toArray(function(err, result) {

    if (err) throw err;

    console.log(result);

    db.close();

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[

  { mb_name: 'homzzang', mb_level: '10' },

  { mb_name: 'AAA', mb_level: '1' },

  { mb_name: 'BBB', mb_level: '2' },

  { mb_name: 'CCC', mb_level: '2' },

  { mb_name: 'DDD', mb_level: '3' },

  { mb_name: 'EEE', mb_level: '3' },

  { mb_name: 'FFF', mb_level: '3' },

  { mb_name: 'GGG', mb_level: '4' },

  { mb_name: 'HHH', mb_level: '4' },

  { mb_name: 'III', mb_level: '4' },

  { mb_name: 'JJJ', mb_level: '4' },

  { mb_name: 'KKK', mb_level: '5' },

  { mb_name: 'LLL', mb_level: '5' },

  { mb_name: 'MMM', mb_level: '5' },

  { mb_name: 'NNN', mb_level: '5' },

  { mb_name: 'OOO' },

  { mb_name: 'PPP' },

  { mb_name: 'QQQ' }

]

 

PS. 중요
동일 객체에서 0과 1값을 모두 지정할 수는 없음. (단, 필드 중 하나가 _id 필드 인 경우 제외). 
값이 0인 필드를 지정하면 다른 모든 필드는 값 1을 가져오고 그 반대의 경우도 마찬가지임.
 

projection 예제1 - _id, mb_name 컬럼만 출력

 

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/";

const options = {useUnifiedTopology: true}; 


MongoClient.connect(url, options, function(err, db) {

  if (err) throw err;

  var dbo = db.db("hz");

  dbo.collection("hz_member").find({}, { projection: { mb_level: 0 } }).toArray(function(err, result) {

    if (err) throw err;

    console.log(result);

    db.close();

  });

});

 


[반환값]

 

[

  { _id: 5f69b3995edfd806d4abfd60, mb_name: 'homzzang' },

  { _id: 5f69b3b2a650682498a08889, mb_name: 'AAA' },

  { _id: 5f69b3b2a650682498a0888a, mb_name: 'BBB' },

  { _id: 5f69b3b2a650682498a0888b, mb_name: 'CCC' },

  { _id: 5f69b3b2a650682498a0888c, mb_name: 'DDD' },

  { _id: 5f69b3b2a650682498a0888d, mb_name: 'EEE' },

  { _id: 5f69b3b2a650682498a0888e, mb_name: 'FFF' },

  { _id: 5f69b3b2a650682498a0888f, mb_name: 'GGG' },

  { _id: 5f69b3b2a650682498a08890, mb_name: 'HHH' },

  { _id: 5f69b3b2a650682498a08891, mb_name: 'III' },

  { _id: 5f69b3b2a650682498a08892, mb_name: 'JJJ' },

  { _id: 5f69b3b2a650682498a08893, mb_name: 'KKK' },

  { _id: 5f69b3b2a650682498a08894, mb_name: 'LLL' },

  { _id: 5f69b3b2a650682498a08895, mb_name: 'MMM' },

  { _id: 5f69b3b2a650682498a08896, mb_name: 'NNN' },

  { _id: 101, mb_name: 'OOO' },

  { _id: 102, mb_name: 'PPP' },

  { _id: 103, mb_name: 'QQQ' }

]

 

 

projection 예제2 - mb_name만 출력

 

중요: _id 필드를 제외하려면 해당 값을 0으로 설정.

 


 

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/";

const options = {useUnifiedTopology: true}; 


MongoClient.connect(url, options, function(err, db) {

  if (err) throw err;

  var dbo = db.db("hz");

  dbo.collection("hz_member").find({}, { projection: { _id: 0, mb_level: 0 } }).toArray(function(err, result) {

    if (err) throw err;

    console.log(result);

    db.close();

  });

});

 


[반환값]

 

[

  { mb_name: 'homzzang' }, { mb_name: 'AAA' },

  { mb_name: 'BBB' },      { mb_name: 'CCC' },

  { mb_name: 'DDD' },      { mb_name: 'EEE' },

  { mb_name: 'FFF' },      { mb_name: 'GGG' },

  { mb_name: 'HHH' },      { mb_name: 'III' },

  { mb_name: 'JJJ' },      { mb_name: 'KKK' },

  { mb_name: 'LLL' },      { mb_name: 'MMM' },

  { mb_name: 'NNN' },      { mb_name: 'OOO' },

  { mb_name: 'PPP' },      { mb_name: 'QQQ' }

]

 

 

projection 예제3 - mb_name, mb_level 컬럼 출력

 

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/";

const options = {useUnifiedTopology: true}; 


MongoClient.connect(url, options, function(err, db) {

  if (err) throw err;

  var dbo = db.db("hz");

  dbo.collection("hz_member").find({}, { projection: { _id: 0 } }).toArray(function(err, result) {

    if (err) throw err;

    console.log(result);

    db.close();

  });

});

 


[반환값]

 

[

  { mb_name: 'homzzang', mb_level: '10' },

  { mb_name: 'AAA', mb_level: '1' },

  { mb_name: 'BBB', mb_level: '2' },

  { mb_name: 'CCC', mb_level: '2' },

  { mb_name: 'DDD', mb_level: '3' },

  { mb_name: 'EEE', mb_level: '3' },

  { mb_name: 'FFF', mb_level: '3' },

  { mb_name: 'GGG', mb_level: '4' },

  { mb_name: 'HHH', mb_level: '4' },

  { mb_name: 'III', mb_level: '4' },

  { mb_name: 'JJJ', mb_level: '4' },

  { mb_name: 'KKK', mb_level: '5' },

  { mb_name: 'LLL', mb_level: '5' },

  { mb_name: 'MMM', mb_level: '5' },

  { mb_name: 'NNN', mb_level: '5' },

  { mb_name: 'OOO' },

  { mb_name: 'PPP' },

  { mb_name: 'QQQ' }

]

 

 

projection 예제4 - 에러 발생 경우

 

동일한 객체에 0과 1 값을 모두 지정하면 오류가 발생. (필드 중 하나가 _id 필드 인 경우 제외).

 


 

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/";

const options = {useUnifiedTopology: true}; 


MongoClient.connect(url, options, function(err, db) {

  if (err) throw err;

  var dbo = db.db("hz");

  dbo.collection("hz_member").find({}, { projection: { mb_name: 1, mb_level: 0 } }).toArray(function(err, result) {

    if (err) throw err;

    console.log(result);

    db.close();

  });

});

 


[반환값] 에러 발생.

 

C:\Users\사용자명\node_modules\mongodb\lib\utils.js:668

          throw error;

          ^


MongoError: Cannot do exclusion on ....

 

 

result 객체

 

위 예제의 결과에서 알 수 있듯, 결과는 각 문서를 객체로 포함하는 배열로 변환 가능.

예를 들어, 세 번째 문서의 이름을 반환하려면 세 번째 배열 객체의 주소 속성을 참조. 

 


 

1.

배열의 index는 0부터 시작. 
(예) 세 번째 자료 index : 2

 

2. 

result 객체 안의 각 속성의 속성값 접근 방법

result[index].column

(예) 

3번째 문서의 mb_name값만 출력.

console.log(result[2].mb_name); // BBB

 


 

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/";

const options = {useUnifiedTopology: true}; 


MongoClient.connect(url, options, function(err, db) {

  if (err) throw err;

  var dbo = db.db("hz");

  dbo.collection("hz_member").find({}, { projection: { mb_name: 1, mb_level: 1 } }).toArray(function(err, result) {

    if (err) throw err;

    console.log(result[2].mb_name);

    db.close();

  });

});

 


[반환값]

 

BBB

 

 

데이터 출력 개수 제한 - limit(n) 메서드



분류 제목
basic Node.js - Home
basic Node.js - Intro (소개)
basic Node.js - Start (시작) - 사용 환경 구축
basic Node.js - Modules (모듈)
basic Node.js - HTTP Module (데이터 전송 모듈)
basic Node.js - File System Module (파일 시스템 모듈)
basic Node.js - URL Module (주소 처리 모듈)
basic Node.js - NPM (노드 패키지 관리자)
basic Node.js - Events (이벤트)
basic Node.js - Upload Files (파일 업로드) 2
basic Node.js - Email (이메일 보내기)
mysql Node.js - MySQL 설치・연결 + 쿼리 보내기
mysql Node.js - MySQL Create Database (DB 생성)
mysql Node.js - MySQL Create Table (테이블 생성) ※ Primary key 설정.
mysql Node.js - MySQL Insert Into (데이터 삽입)
mysql Node.js - MySQL Select From (데이터 선택)
mysql Node.js - MySQL Where (조건절)
mysql Node.js - MySQL Order By (정렬 순서)
mysql Node.js - MySQL Delete From (데이터 삭제)
mysql Node.js - MySQL Drop Table (테이블 삭제)
1/4
목록
찾아주셔서 감사합니다. Since 2012