MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да обработваме заявки за вмъкване в Spring Data, преди да ги добавим към MongoDB?

Изглежда, че е по-добре да напишете персонализиран контролер, вместо да използвате Spring Data REST тук, тъй като основно се нуждаете от два ресурса:един за добавяне на връзка или връщане на съществуващ и втори за извличане на оригинален URI чрез неговия хеш.

В първия метод просто бихте извикали метод на хранилище findByLongURL(…) и използвайте получения URL например, ако имате резултат или предприемете втора стъпка, за да създадете действително хеша и да запазите URL инстанция хранилище на мисли. Вторият ресурс просто ще ви извика вече съществуващ метод.

Това е ясно и лесно за смилане.

Ако имате нужда внедряването на първия метод да бъде атомарна операция, методът на заявка за хранилище трябва да бъде внедрен ръчно (за общи инструкции относно това прочетете съответния раздел в референтна документация ):

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

Както можете да видите, това включва работа с някои детайли от по-ниско ниво (въпреки че подробността може да бъде намалена чрез използване на статични импортирания), но основно ви дава атомарна операция.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Урокът за основите на MongoDB

  2. Намерете всички документи през последните n дни

  3. Извършване на изявление на случай в рамката за агрегиране на mongodb

  4. Не може да се създаде индекс в Azure DocumentDb с протокол Mongodb

  5. Предаване на $HOSTNAME към Docker контейнер при изграждане