티스토리 뷰

Database/mongoDB

[MongoDB] 필드값 업데이트

데브포유 2017. 3. 31. 14:02
반응형

product 콜렉션의 price 필드를 업데이트하는 예제


1. 전체 document의 price를 일괄 업데이트

=> db.product.update( {}, {$set:{price:1000.5}}, {multi:true})


2. price 값에서 소수점 제거

=> db.product.find().forEach( function(data) {

       db.product.update( {_id:data._id}, {$set:{price: Math.round( data.price)}} )

    });


* 원래 필드값을 참조해서 업데이트 하려면 2번의 경우처럼 좀 복잡하게 해야 합니다.

  앞으로 현재값을 가리키는 연산자가 추가 되었으면 더 편할 듯 합니다.



2번의 경우를 자바로 구현하면 아래와 같습니다.

==> 콜렉션까지 가지고 오는 것은 생략


product.find().forEach(new Block<Document>() {

    public void apply(Document document) {

        BasicDBObject obj = (BasicDBObject)JSON.parse( document.toJson());

        product.updateOne( eq("_id", obj.get("_id")), set("price", Math.round( obj.getInt("price"))) );

    }

});

반응형