MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chèn tài liệu trong mongodb với trường autoincrement từ java

Làm theo tài liệu để tạo Trường trình tự tăng dần , chúng tôi điều chỉnh nó để được sử dụng trong Java với trình điều khiển Java MongoDB .

Triển khai ví dụ:

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

}

Phải đặc biệt chú ý đến findAndModify phương pháp . Trong trình điều khiển Java MongoDB (2.12.4), phương pháp này có sẵn với 4 chữ ký khác nhau.
Bạn phải sử dụng một chữ ký cho phép bạn chuyển query đối tượng, update đối tượng và returnNew boolean (phải được đặt thành true ).

Đó là bởi vì theo tài liệu :
Theo mặc định, tài liệu trả về không bao gồm các sửa đổi được thực hiện trên bản cập nhật. Để trả lại tài liệu với các sửa đổi được thực hiện trên bản cập nhật, hãy sử dụng tùy chọn mới.

Chúng tôi cần trả lại tài liệu với các sửa đổi được thực hiện trên bản cập nhật.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách xóa nhiều bản ghi đã chọn trong một bộ sưu tập trong MongoDB bằng cách sử dụng la bàn MongoDB

  2. Mongodb thư giãn các tài liệu lồng nhau

  3. Truy vấn Mongoid theo giá trị hoặc giá trị mặc định

  4. Làm thế nào để tạo một chỉ mục một phần với ngày thay đổi?

  5. Chỉ mục tìm kiếm toàn văn bản trong MongoDB:error:too many text index for, why?