public void createOrUpdateBulk(final Collection<V> values, final long maxTime, final TimeUnit timeUnit) { if (values.isEmpty()) { return; } final List<ReplaceOneModel<Document>> bulkOperations = values.stream() .map(value -> new ReplaceOneModel<>( eq(ID, keyOf(value)), encode(value), BULK_UPSERT_OPERATION)) .collect(toList()); collectionWithWriteTimeout(maxTime, timeUnit) .bulkWrite(bulkOperations, BULK_WRITE_OPTIONS); }
public void createOrUpdateBulk(final Collection<V> values, final long maxTime, final TimeUnit timeUnit) { if (values.isEmpty()) { return; } final List<ReplaceOneModel<Document>> bulkOperations = values.stream() .map(value -> new ReplaceOneModel<>( eq(ID, keyOf(value)), encode(value), BULK_UPSERT_OPERATION)) .collect(toList()); collectionWithWriteTimeout(maxTime, timeUnit) .bulkWrite(bulkOperations, BULK_WRITE_OPTIONS); }
public V create(final V value, final long maxTime, final TimeUnit timeUnit) { final K key = keyOf(value); if (key != null) { final Document doc = encode(value); collectionWithWriteTimeout(maxTime, timeUnit).insertOne(doc); return decode(doc); } else { throw new NullPointerException("Key must not be null"); } }
public V create(final V value) { Document doc = encode(value); collection().insertOne(doc); return decode(doc); }
public V create(final V value, final long maxTime, final TimeUnit timeUnit) { final K key = keyOf(value); if (key != null) { final Document doc = encode(value); collectionWithWriteTimeout(maxTime, timeUnit).insertOne(doc); return decode(doc); } else { throw new NullPointerException("Key must not be null"); } }
public void update(final V value) { final K key = keyOf(value); collection().replaceOne(byId(key), encode(value)); }
/** * Updates the document if it is already present in the repository. * * @param value the new value * @param maxTime max time for the update * @param timeUnit the time unit for the maxTime value * @return true, if the document was updated, false otherwise. */ public boolean update(final V value, final long maxTime, final TimeUnit timeUnit) { final K key = keyOf(value); if (key != null) { return collectionWithWriteTimeout(maxTime, timeUnit) .replaceOne(byId(key), encode(value)) .getModifiedCount() == 1; } else { throw new IllegalArgumentException("Key must not be null"); } }
/** * Updates the document if it is already present in the repository. * * @param value the new value * @param maxTime max time for the update * @param timeUnit the time unit for the maxTime value * @return true, if the document was updated, false otherwise. */ public boolean update(final V value, final long maxTime, final TimeUnit timeUnit) { final K key = keyOf(value); if (key != null) { return collectionWithWriteTimeout(maxTime, timeUnit) .replaceOne(byId(key), encode(value)) .getModifiedCount() == 1; } else { throw new IllegalArgumentException("Key must not be null"); } }
public void updateIfMatch(final V value, final String eTag) { Bson query = and(eq(AbstractMongoRepository.ID, keyOf(value)), eq(ETAG, eTag)); Document updatedETaggable = collection().findOneAndReplace(query, encode(value), new FindOneAndReplaceOptions().returnDocument(AFTER)); if (isNull(updatedETaggable)) { Optional<V> findById = findOne(keyOf(value)); if (findById.isPresent()) { throw new ConcurrentModificationException("Entity concurrently modified: " + keyOf(value)); } throw new NotFoundException("Entity does not exist: " + keyOf(value)); } }
public V createOrUpdate(final V value, final long maxTime, final TimeUnit timeUnit) { final Document doc = encode(value); collectionWithWriteTimeout(maxTime, timeUnit) .replaceOne(byId(keyOf(value)), doc, new UpdateOptions().upsert(true)); return decode(doc); }
public V createOrUpdate(final V value, final long maxTime, final TimeUnit timeUnit) { final Document doc = encode(value); collectionWithWriteTimeout(maxTime, timeUnit) .replaceOne(byId(keyOf(value)), doc, new ReplaceOptions().upsert(true)); return decode(doc); }
public V createOrUpdate(final V value) { final K key = keyOf(value); final Document existing = collection().find(byId(key)).first(); Document doc = encode(value); if (existing != null) { collection().replaceOne(byId(key), doc); } else { collection().insertOne(doc); } return decode(doc); }
final Bson query = and(eq(AbstractMongoRepository.ID, key), eq(ETAG, eTag)); final Document updatedETaggable = collectionWithWriteTimeout(maxTime, timeUnit).findOneAndReplace(query, encode(value), new FindOneAndReplaceOptions().returnDocument(AFTER)); if (isNull(updatedETaggable)) { final boolean documentExists = collection()
final Bson query = and(eq(AbstractMongoRepository.ID, key), eq(ETAG, eTag)); final Document updatedETaggable = collectionWithWriteTimeout(maxTime, timeUnit).findOneAndReplace(query, encode(value), new FindOneAndReplaceOptions().returnDocument(AFTER)); if (isNull(updatedETaggable)) { final boolean documentExists = collection()