7 글 보임 - 1 에서 7 까지 (총 7 중에서)
-
글쓴이글
-
2023년 2월 21일 15:45 #69394
이순민참가자post 컬렉션에 제가 작성한 글들이 저장되는데 글들의 개수를 알고싶어요. 그리고 이 개수를 MongoDB change stream 기능으로 실시간감지해서 counter 컬렉션 totalPost를 변동시켜줄수 있나요?
2023년 2월 21일 17:31 #69425
이순민참가자효율적인코드인지는 모르겠지만 제가 구현해봤는데 한번 봐주세요. post 컬렉션에 있는 도큐먼트 다 불러오고 그 결과 length붙여서 TotalPost라는 변수에 넣었더니 post컬렉션의 도큐먼트 개수가 나옵니다. 그리고 홈페이지( 경로 : '/'로 get 요청할때)로 접속할때 마다 counter 컬렉션의 totalPost의 개수를 갱신합니다. app.get('/', function (요청, 응답) { var TotalPost; db.collection('post').find().toArray(function (에러, 결과) { TotalPost = 결과.length db.collection('counter').updateOne({ name: "게시물개수" }, { $set: { totalPost: TotalPost } }, function (에러, 결과) { console.log('홈페이지 접속, 총게시물수 업데이트 완료') }) }) }) 저는 db.collection.estimatedDocumentCount() 문법이 안먹혀서 위와같이 구현해봤습니다. // db.collection.estimatedDocumentCount() 관련 메뉴얼 주소 https://www.mongodb.com/docs/manual/reference/method/db.collection.estimatedDocumentCount/#mongodb-method-db.collection.estimatedDocumentCount
2023년 2월 21일 19:52 #69445
codingapple키 마스터데이터가 많으면 비효율적일 수도 있을텐데db.collection('post').estimatedDocumentCount() 해봅시다
2023년 2월 22일 20:50 #69614
이순민참가자아래와같이 출력되었고 검색해보니 비동기형식으로 접근해야한다고 하네요 async, await 이용해야할거같은데 아직 제가 못배운부분입니다. 혹시 어떤식으로 적으면 출력될까요? TotalPost = db.collection('post').estimatedDocumentCount({}); console.log('log',TotalPost) //출력 log Promise { <pending> } 아래는 홈페이지로 이동 전체 코드입니다. // 홈페이지로 이동 app.get('/', function (요청, 응답) { var page = Number(요청.query.pageNum || 1); var perPage = Number(요청.query.perPage || 10); var TotalPost; var totalPage; TotalPost = db.collection('post').estimatedDocumentCount({}); console.log('log',TotalPost) db.collection('counter').updateOne({name:"게시물개수"}, {$set: {totalPost: TotalPost}},function(에러,결과){ // console.log('index에서 총게시물수 업데이트 완료') db.collection('post').find(). skip(perPage * (page - 1)). limit(perPage).toArray(function (에러, 퍼페이지결과) { totalPage = Math.ceil(TotalPost / perPage); 응답.render(__dirname + '/views/index.ejs', { totalPage: totalPage, posts: 퍼페이지결과, perPage: perPage}) }); }); }); //===========================
2023년 2월 23일 09:34 #69675
codingapple키 마스터async function (요청, 응답) { 넣고 TotalPost = await db.collection('post').estimatedDocumentCount(); 해봅시다
2023년 3월 4일 22:07 #70898
이순민참가자감사합니다. estimatedDocumentCount();를 통해 도큐먼트의 개수를 얻을 수 있었습니다! // 홈페이지로 이동 app.get('/', async function (요청, 응답) { var page = Number(요청.query.pageNum || 1); var perPage = Number(요청.query.perPage || 10);
var TotalPost; var totalPage; TotalPost = await db.collection('post').estimatedDocumentCount(); console.log(TotalPost); db.collection('counter').updateOne({ name: "게시물개수" }, { $set: { totalPost: TotalPost } }, function (에러, 결과) { // console.log('index에서 총게시물수 업데이트 완료') db.collection('post').find(). skip(perPage * (page - 1)). limit(perPage).toArray(function (에러, 퍼페이지결과) { totalPage = Math.ceil(TotalPost / perPage); 응답.render(__dirname + '/views/index.ejs', { totalPage: totalPage, posts: 퍼페이지결과, perPage: perPage }) }) }) }); //===========================
-
글쓴이글
7 글 보임 - 1 에서 7 까지 (총 7 중에서)
- 답변은 로그인 후 가능합니다.