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

Bagaimana cara memproses permintaan penyisipan di Data Musim Semi sebelum menambahkannya ke MongoDB?

Sepertinya Anda lebih baik menulis pengontrol khusus daripada menggunakan Spring Data REST di sini karena pada dasarnya Anda membutuhkan dua sumber daya:satu untuk menambahkan tautan atau mengembalikan yang sudah ada dan yang kedua untuk mengambil URI asli melalui hashnya.

Pada metode pertama Anda cukup memanggil metode repositori findByLongURL(…) dan gunakan URL yang diperoleh contoh jika Anda memiliki hasil atau mengambil langkah kedua untuk benar-benar membuat hash dan menyimpan URL contoh repositori pemikiran. Sumber daya kedua pada dasarnya hanya akan memanggil Anda metode yang sudah ada.

Itu lurus ke depan dan mudah dicerna.

Jika Anda memerlukan implementasi metode sebelumnya menjadi operasi atom, metode kueri repositori perlu diterapkan secara manual (untuk instruksi umum tentang itu, baca bagian yang relevan di dokumentasi referensi ):

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

Seperti yang Anda lihat, ini melibatkan penanganan beberapa detail tingkat yang lebih rendah (meskipun verbositas dapat dikurangi dengan menggunakan impor statis) tetapi pada dasarnya memberi Anda operasi atom.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Regex Mongodb dalam agregasi menggunakan referensi ke nilai bidang

  2. Data pegas dan mongodb - putar kembali sederhana dengan pegas dalam @Transactional

  3. Bagaimana saya bisa menjalankan pernyataan SETELAH loop selesai di javascript?

  4. Bagaimana cara menghapus properti objek bersarang dari dokumen MongoDB?

  5. server mengembalikan kesalahan pada langkah otentikasi SASL:Otentikasi gagal