$inc을 확인하십시오.
// connect to MongoDB server.
Mongo mongo = new Mongo("localhost", 27017);
DB database = mongo.getDB("mydb");
DBCollection collection = database.getCollection("testCollection");
// create a simple db object where counter value is 0
DBObject temp = new BasicDBObject("name", "someName").append("counter", 0);
// insert it into the collection
collection.insert(temp);
// create an increment query
DBObject modifier = new BasicDBObject("counter", 1);
DBObject incQuery = new BasicDBObject("$inc", modifier);
// create a search query
DBObject searchQuery = new BasicDBObject("name", "someName");
// increment a counter value atomically
WriteResult upRes = collection.update(searchQuery, incQuery);
예 : 여기
이 link에서 샘플 코드입니다. 그게 내가 증가하지만 내 문제는 두 개의 동시 스레드가 데이터베이스에서 동일한 값을 읽고 다음 값을 변경 (일부 조작을하고있다)하고 데이터베이스에 그 값을 업데이 트하는 경우 작동합니다. 예를 들어 .. A와 B는 두 명의 사용자입니다. A는 10을 읽고 B는 10을 동시에 읽습니다. A가 10에서 일부 계산을 수행 한 다음 처음으로 B를 업데이트 한 다음 B가 업데이트 된 값을 읽어야합니다. – vareen그런 다음 사용자 A가 레코드를 읽고 수정하고 있다고 가정합니다. 사용자 B를 어떻게 처리 할 것으로 예상합니까? 레코드를 잠그고 레코드가 사용 중임을 알리는 예외를 던지거나 트랜잭션/잠금이 끝나기를 기다릴 수 있습니다. –