목차
collection에서 1개 데이터 찾기 - findOne() 메서드
collection에서 여러 데이터 가져오기 - find() 메서드
일부 컬럼의 데이터만 가져오기
projection 예제1 - _id, mb_name 컬럼만 출력
projection 예제2 - mb_name만 출력
projection 예제3 - mb_name, mb_level 컬럼 출력
projection 예제4 - 에러 발생 경우
result 객체
데이터 출력 개수 제한 - 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) 메서드
주소 복사
랜덤 이동
최신댓글