MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Вмъкнете документ в mongodb с поле за автоматично нарастване от java

Следвайки документацията за създаване на поле за последователност с автоматично нарастване , ние го адаптираме за използване в Java с драйвера на Java MongoDB .

Примерно внедряване:

import java.net.UnknownHostException;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;

public class TestAutoIncrement {

private final static String DB_NAME = "MyTestDB";
private final static String TEST_COLLECTION = "testCollection";
private final static String COUNTERS_COLLECTION = "countersCollection";

public static DBCollection testCollection;
public static DBCollection countersCollection;

public static void main(String[] args) {

    try {
        MongoClient mongoClient = new MongoClient();
        DB database = mongoClient.getDB(DB_NAME);
        testCollection = database.getCollection(TEST_COLLECTION);
        countersCollection = database.getCollection(COUNTERS_COLLECTION);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }

    if (countersCollection.count() == 0) {
        createCountersCollection();
    }

    createTestCollection();
}

public static void createCountersCollection() {

    BasicDBObject document = new BasicDBObject();
    document.append("_id", "userid");
    document.append("seq", 0);
    countersCollection.insert(document);
}

public static Object getNextSequence(String name) {

    BasicDBObject searchQuery = new BasicDBObject("_id", name);
    BasicDBObject increase = new BasicDBObject("seq", 1);
    BasicDBObject updateQuery = new BasicDBObject("$inc", increase);
    DBObject result = countersCollection.findAndModify(searchQuery, null, null,
            false, updateQuery, true, false);

    return result.get("seq");
}

public static void createTestCollection() {

    BasicDBObject document = new BasicDBObject();
    document.append("_id", getNextSequence("userid"));
    document.append("name", "Sarah");
    testCollection.insert(document);

    document = new BasicDBObject();
    document.append("_id", getNextSequence("userid"));
    document.append("name", "Bob");
    testCollection.insert(document);

    document = new BasicDBObject();
    document.append("_id", getNextSequence("userid"));
    document.append("name", "Alex");
    testCollection.insert(document);
  }

}

Трябва да се обърне специално внимание на findAndModify метода . В Java MongoDB драйвера (2.12.4) методът е наличен с 4 различни подписа.
Трябва да използвате такъв, който ви позволява да подадете query обект, update обект и returnNew булево (което трябва да бъде зададено на true ).

Това е така, защото според документация :
По подразбиране върнатият документ не включва промените, направени при актуализацията. За да върнете документа с промените, направени при актуализацията, използвайте новата опция.

Трябва да върнем документа с промените, направени при актуализацията.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да се свържете с друга база данни MongoDB като суперпотребител с помощта на NodeJS?

  2. Пространствени данни с mongodb или cassandra

  3. mongodb не можа да се свърже със сървъра

  4. Групирайте по ден с множество полета за дата

  5. Mongo DB агрегиране с масив от обекти