mongoDB 사용 - 추가, 찾기, 삭제, 수정

Jinno·2022년 8월 10일
0

Express

목록 보기
6/11
  • 추가: insertOne()
  • 찾기: find(), findOne()
  • 삭제: deleteOne()
  • 수정: updateOne()


1. DB에 collection 생성

  • mongoDB Atlas에 접속해서, 'collections' 버튼 클릭 -> Add my own data 클릭해서 생성


2. Collection에 자료 추가 - insertOne

db.collection('post').insertOne( {name : 'Jinno', age : 80, memo: 'hello'} , function(err, result){
	    console.log('db의 콜렉션(post)에 저장 완료'); 
	});


3. Collection에서 자료 찾기 - findOne

db.collection('post').findOne( {name : 'Jinno'} , function(error, result){
	    console.log(result.name); 
	});


4. Collection에서 자료 찾기 - find

 db.collection('post').find().toArray(function (error, result) {        
        res.render('List.ejs', { contents: result});        
    });


5. Collection에서 자료 삭제 - deleteOne

db.collection('post').deleteOne({name : 'Jinno', age : 80, memo: 'hello'},function(error, result){        	
        res.status(200).send('Success');
    });
app.delete('/delete', function(req, res){
    req.body._id = parseInt(req.body._id)
    db.collection('post').deleteOne(req.body,function(error, result){        
        res.status(200).send('Success');
    });
});
  • html에서 넘어오는 숫자가 문자형으로 바뀌는 경우가 있음. 그럴 경우는 parseInt로 변환


    6. Collection에서 자료 수정 - updateOne

app.put('/edit', function(req,res){
    db.collection('post').updateOne({_id: parseInt(req.body.id)}, {$set: {name:req.body.name, date:req.body.date}}, function(error, result){
        console.log('수정완료')
        res.redirect('/list')        
    })    
})
  • updateOne({수정할 하위 콜렉션},{$set: {key:value}},function())의 구조


7. Collection에서 자료 수정 - updateOne, $inc

app.post('/add', function(req, res){        
    db.collection('counter').findOne({name:'namecounter'}, function(error, result){        
        db.collection('post').insertOne({_id: result.totalPost+1, name: req.body.title, date: req.body.date}, function(error, result){
            if(error) {return console.log(error)}            
            db.collection('counter').updateOne({name:'namecounter'},{$inc: {totalPost:1}}, function(){});
            res.redirect('/list');    
        });        
    });    
});
  • {$inc: {totalPost:1} totalPost의 값을 1만큼 증가
  • 10이면 10만큼 증가, -10이면 -10만큼 증가
  • 위 예시에서는 counter collection에 namecounter라는 전체 포스팅수를 관리하는 값을 업데이트하는 용도로 사용
  • 참고로 post collection의 하위 콜렉션의 '_id'값을 namecounter로 부터 받아와서 업데이트
profile
Innovation, 기록용

0개의 댓글