, как писал Алекс, но этот код подходит для версий 3.x
import com.mongodb.*;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class TestAutoIncrement {
private final static String DB_NAME = "MyTestDB";
private final static String TEST_COLLECTION = "testCollection";
private final static String COUNTERS_COLLECTION = "countersCollection";
private static MongoCollection<Document> testCollection;
private static MongoCollection<Document> countersCollection;
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient();
MongoDatabase database = mongoClient.getDatabase(DB_NAME);
testCollection = database.getCollection(TEST_COLLECTION);
countersCollection = database.getCollection(COUNTERS_COLLECTION);
if (countersCollection.count() == 0) {
createCountersCollection();
}
createTestCollection();
mongoClient.close();
}
public static void createCountersCollection() {
Document document = new Document();
document.append("_id", "userid");
document.append("seq", 1);
countersCollection.insertOne(document);
}
public static Object getNextSequence(String name) {
Document searchQuery = new Document("_id", name);
Document increase = new Document("seq", 1);
Document updateQuery = new Document("$inc", increase);
Document result = countersCollection.findOneAndUpdate(searchQuery, updateQuery);
return result.get("seq");
}
public static void createTestCollection() {
Document document = new Document();
document.append("_id", getNextSequence("userid"));
document.append("name", "Dinah");
testCollection.insertOne(document);
document = new Document();
document.append("_id", getNextSequence("userid"));
document.append("name", "Jonny");
testCollection.insertOne(document);
document = new Document();
document.append("_id", getNextSequence("userid"));
document.append("name", "Brody");
testCollection.insertOne(document);
}
}