sql >> Databáze >  >> NoSQL >> MongoDB

Vložte dokument do mongodb s polem autoincrement z javy

Postupujte podle dokumentace pro vytvoření pole sekvence automatického zvyšování , přizpůsobíme jej pro použití v Javě s ovladač Java MongoDB .

Příklad implementace:

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);
  }

}

Zvláštní pozornost je třeba věnovat findAndModify metoda . V ovladači Java MongoDB (2.12.4) je metoda dostupná se 4 různými podpisy.
Musíte použít ten, který vám umožní předat query objekt, update objekt a returnNew boolean (který musí být nastaven na true ).

Je to proto, že podle dokumentace :
Ve výchozím nastavení vrácený dokument neobsahuje úpravy provedené při aktualizaci. Chcete-li vrátit dokument s úpravami provedenými při aktualizaci, použijte novou možnost.

Musíme vrátit dokument s úpravami provedenými při aktualizaci.



  1. Možnost výkonu agregace MongoDB

  2. Aktualizujte podmnožinu polí pomocí Mongoose

  3. Výkon MongoDB toArray

  4. Polygony dotazu $geowithin $box mongodb nic nevrací