mongodb + java push update query
첨부파일 저장하고 mongodb 에 넣을때 컬렉션에 imgs에 배열로 계속 추가 및 수정, 삭제를 하려한다.
for (MongoFileVo mongoFileVo : fresult) {
doc_fpimg = new BasicDBObject();
doc_fpimg.put("footprintsimgidx", mongoFileVo.getFootprintsimgidx());
doc_fpimg.put("footprintpgmFileSeq", mongoFileVo.getFootprintpgmFileSeq());
doc_fpimg.put("fileSaveNm", mongoFileVo.getFileSaveNm());
doc_fpimg.put("fileRealNm", mongoFileVo.getFileRealNm());
doc_fpimg.put("fileSize", mongoFileVo.getFileSize());
doc_fpimg.put("fileExt", mongoFileVo.getFileExt());
DBObject appendObj = new BasicDBObject();
appendObj.put("$push", new BasicDBObject().append("footprintimgs", doc_fpimg));
coll_footprints.updateOne(Filters.eq("footprintidx",footprintidx+1), (Bson) appendObj);
}
이렇게 한개씩 $push를 update 해도 되고
List imglist = new ArrayList<>();
for (MongoFileVo mongoFileVo : fresult) {
doc_fpimg = new BasicDBObject();
doc_fpimg.put("footprintsimgidx", mongoFileVo.getFootprintsimgidx());//++1하면서만들어냄
doc_fpimg.put("footprintpgmFileSeq", mongoFileVo.getFootprintpgmFileSeq());
doc_fpimg.put("fileSaveNm", mongoFileVo.getFileSaveNm());
doc_fpimg.put("fileRealNm", mongoFileVo.getFileRealNm());
doc_fpimg.put("fileSize", mongoFileVo.getFileSize());
doc_fpimg.put("fileExt", mongoFileVo.getFileExt());
imglist.add(doc_fpimg);
}
coll_footprints.updateOne(Filters.eq("footprintidx",footprintidx+1), Updates.pushEach("footprintimgs", imglist));
마지막에 이렇게 한번에 pushEach해도 된다.