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

Làm cách nào để xử lý các yêu cầu chèn trong Dữ liệu mùa xuân trước khi thêm chúng vào MongoDB?

Có vẻ như bạn nên viết một bộ điều khiển tùy chỉnh thay vì sử dụng Spring Data REST ở đây vì về cơ bản bạn cần hai tài nguyên:một tài nguyên để thêm liên kết hoặc trả lại tài nguyên hiện có và tài nguyên thứ hai để truy xuất URI gốc thông qua băm của nó.

Trong phương thức đầu tiên, bạn chỉ cần gọi một phương thức lưu trữ findByLongURL(…) và sử dụng URL thu được ví dụ nếu bạn có kết quả hoặc thực hiện bước thứ hai để thực sự tạo hàm băm và lưu URL kho lưu trữ tư tưởng ví dụ. Tài nguyên thứ hai về cơ bản sẽ chỉ gọi cho bạn phương thức đã tồn tại.

Điều đó dễ hiểu và dễ hiểu.

Nếu bạn cần việc triển khai phương pháp cũ là một hoạt động nguyên tử, phương thức truy vấn kho lưu trữ cần được triển khai thủ công (để biết hướng dẫn chung về cách này, hãy đọc phần có liên quan trong tài liệu tham khảo ):

class UrlRepositoryImpl implements UrlRepositoryCustom {

  private final MongoOperations operations;

  public UrlRepositoryImpl(MongoOperations operations) {
    this.operations = operations;
  }

  @Override
  public URL findOrInsert(String source) {

    // What to find?
    Query query = Query.query(Criteria.where("longURL").is(source);

    // What to write if nothing can be found
    Update update = new Update()
      .setOnInsert("longURL", source)
      .setOnInsert("hash", calculatedHash);

    FindAndModifyOptions options = new FindAndModifyOptions.options()
      .returnNew(true) // returns the document insert (if so)
      .upsert(true); // insert document if it doesn't exist

    return operations.findAndModify(query, update, options, URL.class);
  }
}

Như bạn có thể thấy, điều này liên quan đến việc xử lý một số chi tiết cấp thấp hơn (mặc dù độ chi tiết có thể được giảm bớt bằng cách sử dụng nhập tĩnh) nhưng về cơ bản cung cấp cho bạn một hoạt động nguyên tử.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để sử dụng toán tử 'Không thích' trong MongoDB

  2. Sự cố khi cài đặt Mongodb trên Ubuntu 20.04

  3. Mongodb có đang chạy không?

  4. Meteor / ReactJS - Sự cố nhấp nháy giao diện người dùng:hiển thị hai lần trước và sau khi kiểm tra cơ sở dữ liệu

  5. Cách MongoDB chọn kế hoạch ứng viên