MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Masukkan dokumen di mongodb dengan bidang peningkatan otomatis dari java

Mengikuti dokumentasi untuk membuat Bidang Urutan Peningkatan Otomatis , kami mengadaptasinya untuk digunakan di Java dengan driver Java MongoDB .

Contoh penerapan:

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

}

Perhatian khusus harus diberikan pada findAndModify metode . Dalam driver Java MongoDB (2.12.4), metode ini tersedia dengan 4 tanda tangan berbeda.
Anda harus menggunakan salah satu yang memungkinkan Anda meneruskan query objek, update objek dan returnNew boolean (yang harus disetel ke true ).

Itu karena, menurut dokumentasi :
Secara default, dokumen yang dikembalikan tidak menyertakan modifikasi yang dibuat pada pembaruan. Untuk mengembalikan dokumen dengan modifikasi yang dibuat pada pembaruan, gunakan opsi baru.

Kami perlu mengembalikan dokumen dengan modifikasi yang dibuat pada pembaruan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Memperbarui catatan bersarang di array mongodb saat Anda tidak mengetahui indeks dokumen

  2. Mongo Cast String ke Number untuk Query

  3. MongoDB dan Docker melalui kesalahan autentikasi pembuatan docker dan tidak menginisialisasi db

  4. Cara $setDifference dalam array &Objek menggunakan Mongo DB

  5. Bagaimana cara saya menanyakan array kamus di MongoDB?