mongodb 자바 라이브러리 정의(in gradle)
dependencies {
implementation "org.mongodb:mongo-java-driver:3.4.1"
}
mongoClient 선언
MongoClient mongoClient = new MongoClient("localhost", 27027);
MongoCollection<Document> collection = database.getCollection(COLLECTION_NAME);
upsert 수행
String findKey = "{\"name\":\"wonyoung\"}"; // 찾아야할 데이터 값
int count = 1; // 추가하는 데이터
BasicDBObject keyObject = BasicDBObject.parse(findKey);
BasicDBObject countObject = new BasicDBObject("count", count);
BasicDBObject incrementDocument = new BasicDBObject("$inc", countObject); // increment를 수행할때는 반드시 $inc로 선언해야한다.
UpdateResult result = collection.updateOne(keyObject
, incrementDocument
, new UpdateOptions().upsert(true)); // 만약 "name":"wonyoung" 이 없다면 신규 도큐먼트를 생성한다
실행 결과
1. 데이터가 없는 경우
데이터가 존재하지 않으므로 새로 값이 insert 된다.
{
"name": "wonyoung",
"count": 1
}
UpdateOptions의 upsert() 에 true로 값을 주면 신규 도큐먼트를 생성한다.
public UpdateOptions upsert(boolean upsert)
Set to true if a new document should be inserted if there are no matches to the query filter.
2. 데이터가 있는 경우
아래와 같이 데이터가 있었다면
{
"name": "wonyoung",
"count": 9
}
count 값이 1 더 올라간다
{
"name": "wonyoung",
"count": 10
}
반응형
'빅데이터 > nosql' 카테고리의 다른 글
couchbase 따라하기(in mac) (0) | 2021.10.29 |
---|---|
kafka console consumer 여러 토픽 컨슘하기 (1) | 2021.02.25 |
4.0 미만 mongoDB에서 db 복제하기 (0) | 2020.12.04 |
pymongo - find결과로 나온 데이터의 ObjectId()를 string으로 변경하기 (2) | 2020.05.13 |
mongodb shell에서 printjson을 사용하여 BSON을 text로 보기 (0) | 2019.09.02 |
mongodb shell에서 array로 정의한 multi db 검색하기 (0) | 2019.09.02 |