이 내용의 collection 조회 기능은 아래 링크의 mongodb connect 과정을 통한 조회 방법이니 mongoose와 다릅니다!
https://blog.naver.com/glory4god/222533893848
오늘 살펴볼 내용은 mongodb에서 collection을 조회하는 경우를 살펴보도록 함!!
먼저 서버는 nextjs 서버를 통해 작성된 내용임을 참고하도록 ...!
import { connectToDatabase } from 'lib/mongoDB/mongodb';
import { NextApiRequest, NextApiResponse } from 'next';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
const { db } = await connectToDatabase();
}
위의 코드는 이전 글에서 작성한 connectToDatabase 함수를 통해 db라는 mongodb에 connect 된 객체를 가져올 수 있으니 객체구조화를 통해 db 가져오자!
그러면 db를 통해 이제 자유롭게 mongodb 문법을 적용할 수 있는데,
나의 db에는 현재 boards 라는 인스타 게시글에 대한 collection이 있으니 그 정보를 가져오도록 해보자!
import { connectToDatabase } from 'lib/mongoDB/mongodb';
import { NextApiRequest, NextApiResponse } from 'next';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
const { db } = await connectToDatabase();
const boards = await db.collection('boards').find({}).toArray();
return res
.status(200)
.json(boards)
}
다음과 같이 boards 라는 collections에 전체 내용을 조회해서 가져옴을 확인할 수 있다!!
그렇다면 내가 원하는 데이터만을 조회하기 위한 몇가지 기능을 알아보도록 하자!
import { connectToDatabase } from 'lib/mongoDB/mongodb';
import { NextApiRequest, NextApiResponse } from 'next';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
const { db } = await connectToDatabase();
const boards = await db
.collection('boards')
.find({ username: 'karina' })
.toArray();
return res
.status(200)
.json(boards)
}
먼저는 find에 { username: 'karina' }을 넣음으로 username 이 karina랑 일치하는 게시글만을 조회하는 기능이다. 한마디로 sql의 where 절이라고 생각하면 됨!
아래처럼 karina 데이터만이 조회됨을 확인할 수 있음!
또 자세히보니 _id라는 objectId나 내가 원치않는 데이터는 제외시키고 싶은 경우도 있지 않을까?!
그 부분은 projection 절을 이용하면 내가 제외시키고 싶은 부분을 설정을 할 수도 있음!
import { connectToDatabase } from 'lib/mongoDB/mongodb';
import { NextApiRequest, NextApiResponse } from 'next';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
const { db } = await connectToDatabase();
const boards = await db
.collection('boards')
.find({ username: 'karina' }, { projection: { _id: 0, modifiedDate: 0 } })
.toArray();
return res
.status(200)
.json(boards)
}
나는 _id 와 modifiedDate를 제외시켜봤다.
(여기서 0은 false 이며 default값은 1임)
즉 0으로 변경된 내용을 제외하면 나머지는 그대로 가져와서 조회를 함!!
'백엔드' 카테고리의 다른 글
collection 조회 - mongoose (0) | 2022.02.22 |
---|---|
mongodb / mongoose dbConnect (0) | 2022.02.20 |
CORS error : access-control-allow-origin (0) | 2022.02.20 |
사용중인 포트 KILL - (The Tomcat connector configured to listen on port 8080 failed to start) (0) | 2022.02.19 |