Java 类com.mongodb.client.model.FindOneAndReplaceOptions 实例源码

项目:GitHub    文件:Repositories.java   
protected final FluentFuture<Optional<T>> doReplace(
        final Constraints.ConstraintHost criteria,
        final T document,
        final FindOneAndReplaceOptions options) {

  checkNotNull(criteria, "criteria");
  checkNotNull(document, "document");
  checkNotNull(options, "options");

  return submit(new Callable<Optional<T>>() {
    @Override
    public Optional<T> call() throws Exception {
      @Nullable T result = collection().findOneAndReplace(
          convertToBson(criteria), // query
          document,
          options);

      return Optional.fromNullable(result);
    }
  });

}
项目:dragoman    文件:MongoDatasetDao.java   
@Override
public Dataset write(Dataset dataset) {
  // we populate this on first write and retain it thereafter
  if (isBlank(dataset.getId())) {
    dataset.setId(ObjectId.get().toString());
  }

  Observable<Document> observable =
      getCollection()
          .findOneAndReplace(
              Filters.eq("id", dataset.getId()),
              documentTransformer.transform(dataset),
              new FindOneAndReplaceOptions().upsert(true).returnDocument(ReturnDocument.AFTER));

  return documentTransformer.transform(Dataset.class, observable.toBlocking().single());
}
项目:ibm-performance-monitor    文件:ProfiledMongoCollection.java   
@Override
public TDocument findOneAndReplace(Bson filter, TDocument arg1, FindOneAndReplaceOptions arg2)
{
    OperationMetric metric = null;
    if (MongoLogger.GATHERER.isEnabled())
    {
        List<String> keyValuePairs = MongoUtilities.getKeyValuePairs(filter);
        String operationName = "Mongo : " + getNamespace().getCollectionName() + " : findOneAndReplace " +
            MongoUtilities.filterParameters(filter).toString();
        metric = startMetric(operationName, keyValuePairs);
        addWriteKeyValuePairs(keyValuePairs);
        if (MongoLogger.isRequestSizeMeasured())
        {
            metric.setProperty(CommonMetricProperties.REQUEST_SIZE_BYTES, Integer.toString(measureDocumentSize(arg1)));
        }
        addWriteConcern(metric);
        addReadConcernAndPreference(metric);
    }

    TDocument retVal = collection.findOneAndReplace(filter, arg1, arg2);

    stopMetric(metric, measureDocumentSizeIfResultSizeEnabled(retVal));

    return retVal;
}
项目:ibm-performance-monitor    文件:ProfiledMongoClientTest.java   
@Test
public void findOneAndReplace()
{
    insertOneWithBulk();

    Document replace = Document.parse(
        "{\"car_id\":\"c7a\",\"name\":\"DELETEME\",\"color\":\"Redaa\",\"cno\":\"H116aa\",\"mfdcountry\":\"India\",\"speed\":53,\"price\":4.5}");

    Assert.assertNotNull(coll.findOneAndReplace(Filters.eq("name", "DELETEME"), replace));

    insertOneWithBulk();

    Assert.assertNotNull(
        coll.findOneAndReplace(Filters.eq("name", "DELETEME"), replace, new FindOneAndReplaceOptions()));

    coll.deleteMany(Filters.eq("name", "DELETEME"));
}
项目:edison-microservice    文件:AbstractMongoRepository.java   
/**
 * Updates the document if the document's ETAG is matching the given etag (conditional put).
 * <p>
 * Using this method requires that the document contains an "etag" field that is updated if
 * the document is changed.
 * </p>
 *
 * @param value    the new value
 * @param eTag     the etag used for conditional update
 * @param maxTime  max time for the update
 * @param timeUnit the time unit for the maxTime value
 * @return {@link UpdateIfMatchResult}
 */
public UpdateIfMatchResult updateIfMatch(final V value,
                                         final String eTag,
                                         final long maxTime,
                                         final TimeUnit timeUnit) {
    final K key = keyOf(value);
    if (key != null) {
        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()
                    .count(eq(AbstractMongoRepository.ID, key), new CountOptions().maxTime(maxTime, timeUnit)) != 0;
            if (documentExists) {
                return CONCURRENTLY_MODIFIED;
            }

            return NOT_FOUND;
        }

        return OK;
    } else {
        throw new IllegalArgumentException("Key must not be null");
    }
}
项目:epcis    文件:ChronoElement.java   
/**
 * set timestamp properties (replace) for the given timestamp
 * 
 * @param timestamp
 * @param timestampProperties
 */
public void setTimestampProperties(final Long timestamp, BsonDocument timestampProperties) {
    if (timestampProperties == null)
        timestampProperties = new BsonDocument();
    if (this instanceof ChronoVertex) {
        graph.getVertexEvents().findOneAndReplace(
                new BsonDocument(Tokens.VERTEX, new BsonString(this.id)).append(Tokens.TIMESTAMP,
                        new BsonDateTime(timestamp)),
                Converter.makeTimestampVertexEventDocumentWithoutID(timestampProperties, this.id, timestamp),
                new FindOneAndReplaceOptions().upsert(true));
    } else {
        ChronoEdge e = (ChronoEdge) this;
        graph.getEdgeEvents().findOneAndReplace(
                new BsonDocument(Tokens.OUT_VERTEX, new BsonString(e.getOutVertex().toString()))
                        .append(Tokens.LABEL, new BsonString(e.getLabel()))
                        .append(Tokens.TIMESTAMP, new BsonDateTime(timestamp))
                        .append(Tokens.IN_VERTEX, new BsonString(e.getInVertex().toString())),
                Converter.makeTimestampEdgeEventDocumentWithoutID(timestampProperties, this.id, timestamp),
                new FindOneAndReplaceOptions().upsert(true));
    }
}
项目:vertx-mongo-client    文件:MongoClientImpl.java   
@Override
public io.vertx.ext.mongo.MongoClient findOneAndReplaceWithOptions(String collection, JsonObject query, JsonObject replace, FindOptions findOptions, UpdateOptions updateOptions, Handler<AsyncResult<JsonObject>> resultHandler) {
  requireNonNull(collection, "collection cannot be null");
  requireNonNull(query, "query cannot be null");
  requireNonNull(findOptions, "find options cannot be null");
  requireNonNull(updateOptions, "update options cannot be null");
  requireNonNull(resultHandler, "resultHandler cannot be null");

  JsonObject encodedQuery = encodeKeyWhenUseObjectId(query);

  Bson bquery = wrap(encodedQuery);
  FindOneAndReplaceOptions foarOptions = new FindOneAndReplaceOptions();
  foarOptions.sort(wrap(findOptions.getSort()));
  foarOptions.projection(wrap(findOptions.getFields()));
  foarOptions.upsert(updateOptions.isUpsert());
  foarOptions.returnDocument(updateOptions.isReturningNewDocument() ? ReturnDocument.AFTER : ReturnDocument.BEFORE);

  MongoCollection<JsonObject> coll = getCollection(collection);
  coll.findOneAndReplace(bquery, replace, foarOptions, wrapCallback(resultHandler));
  return this;
}
项目:immutables    文件:Repositories.java   
protected final FluentFuture<Optional<T>> doReplace(
        final Constraints.ConstraintHost criteria,
        final T document,
        final FindOneAndReplaceOptions options) {

  checkNotNull(criteria, "criteria");
  checkNotNull(document, "document");
  checkNotNull(options, "options");

  return submit(new Callable<Optional<T>>() {
    @Override
    public Optional<T> call() throws Exception {
      @Nullable T result = collection().findOneAndReplace(
          convertToBson(criteria), // query
          document,
          options);

      return Optional.fromNullable(result);
    }
  });

}
项目:GitHub    文件:Repositories.java   
protected Replacer(
    Repository<T> repository,
    T document,
    Constraints.ConstraintHost criteria,
    Constraints.Constraint ordering) {
  super(repository);
  this.document = checkNotNull(document, "document");
  this.criteria = checkNotNull(criteria, "criteria");
  this.ordering = checkNotNull(ordering, "ordering");
  this.options = new FindOneAndReplaceOptions();
}
项目:mongodb-rdbms-sync    文件:SyncMapDao.java   
public SyncMap saveMapping(SyncMap map) {
    // TODO : check why this is needed
    if (map.getMapId() == null) {
        map.setMapId(new ObjectId());
    }
    return syncMappings.findOneAndReplace(Filters.eq(SyncAttrs.ID, map.getMapId()), map,
            new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER).upsert(true));
}
项目:mongodb-rdbms-sync    文件:SyncEventDao.java   
public SyncEvent saveEvent(SyncEvent event) {
    if (event.getEventId() == null) {
        event.setEventId(new ObjectId());
    }
    return syncEvents.findOneAndReplace(Filters.eq(SyncAttrs.ID, event.getEventId()), event,
            new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER).upsert(true));
}
项目:mongodb-rdbms-sync    文件:SyncConnectionDao.java   
public SyncConnectionInfo updateConnection(SyncConnectionInfo connInfo) {
    if(connInfo.getConnectionId() == null){
        connInfo.setConnectionId(new ObjectId());
    }
    return connectionInfo.findOneAndReplace(
            Filters.eq(String.valueOf(ConnectionInfoAttributes._id), connInfo.getConnectionId()), connInfo,
            new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER).upsert(true));
}
项目:mongo-obj-framework    文件:SmofOpOptionsImpl.java   
@Override
   public FindOneAndReplaceOptions toFindOneAndReplace() {
    final FindOneAndReplaceOptions options = new FindOneAndReplaceOptions();
    options.bypassDocumentValidation(!validateDocuments);
    setMaxTime(options);
    setProjection(options);
    options.returnDocument(ret);
    setSort(options);
    options.upsert(upsert);
    return options;
}
项目:mongo-java-driver-rx    文件:MongoCollectionImpl.java   
@Override
public Observable<TDocument> findOneAndReplace(final Bson filter, final TDocument replacement, final FindOneAndReplaceOptions options) {
    return RxObservables.create(Observables.observe(new Block<SingleResultCallback<TDocument>>() {
        @Override
        public void apply(final SingleResultCallback<TDocument> callback) {
            wrapped.findOneAndReplace(filter, replacement, options, callback);
        }
    }), observableAdapter);
}
项目:mongo-java-driver-reactivestreams    文件:MongoCollectionImpl.java   
@Override
public Publisher<TDocument> findOneAndReplace(final Bson filter, final TDocument replacement, final FindOneAndReplaceOptions options) {
    return new ObservableToPublisher<TDocument>(observe(new Block<SingleResultCallback<TDocument>>() {
        @Override
        public void apply(final SingleResultCallback<TDocument> callback) {
            wrapped.findOneAndReplace(filter, replacement, options, callback);
        }
    }));
}
项目:mongo-java-driver-reactivestreams    文件:MongoCollectionImpl.java   
@Override
public Publisher<TDocument> findOneAndReplace(final ClientSession clientSession, final Bson filter, final TDocument replacement,
                                              final FindOneAndReplaceOptions options) {
    return new ObservableToPublisher<TDocument>(observe(new Block<SingleResultCallback<TDocument>>() {
        @Override
        public void apply(final SingleResultCallback<TDocument> callback) {
            wrapped.findOneAndReplace(clientSession, filter, replacement, options, callback);
        }
    }));
}
项目:immutables    文件:Repositories.java   
protected Replacer(
    Repository<T> repository,
    T document,
    Constraints.ConstraintHost criteria,
    Constraints.Constraint ordering) {
  super(repository);
  this.document = checkNotNull(document, "document");
  this.criteria = checkNotNull(criteria, "criteria");
  this.ordering = checkNotNull(ordering, "ordering");
  this.options = new FindOneAndReplaceOptions();
}
项目:mongodb-rdbms-sync    文件:SyncUserSessionDao.java   
public SyncUserSession saveSession(SyncUserSession userSession) {
    return userSessionCollection.findOneAndReplace(
            Filters.eq(String.valueOf(SessionAttributes._id), userSession.getSessionId()), userSession,
            new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER).upsert(true));
}
项目:mongodb-rdbms-sync    文件:SyncNodeDao.java   
public SyncNode updateNodeDetails(SyncNode nodeMapper) {
    return syncNodeMapping.findOneAndReplace(Filters.eq(SyncAttrs.ID, nodeMapper.getId()), nodeMapper,
            new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER).upsert(true));
}
项目:mongodb-rdbms-sync    文件:SyncUserDao.java   
public SyncUser updateUser(SyncUser user) {
    return userDetailsCollection.findOneAndReplace(
            Filters.eq(String.valueOf(UserDetailAttributes._id),user.getUserid()),user,
                    new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER)
                                                  .upsert(true));
}
项目:mongodb-rdbms-sync    文件:OrclToMngSyncWriter.java   
@Override
public void run() {
    logger.info("OrclToMngSyncWriter started "+Thread.currentThread().getName());
    List<Document> docs = null;
    FindOneAndReplaceOptions options = new FindOneAndReplaceOptions();
    options.upsert(true);
    while(retryCount<5){
        try {
            if(marker.isFailed()){
                releaseResources();
                return;
            }
            waitTime=30000;
            docs = dataBuffer.take();
            if (docs == null || docs.isEmpty()) {
                continue;
            }
            if(collection==null){
                refreshCollectionHandle();
            }
            for(Document doc : docs){
                if(SyncConstants.DELETE.equals(doc.get(SyncConstants.OPERATION))){
                    collection.findOneAndDelete(getFilter(doc));
                    logger.info("Document deleted");
                }else{
                    collection.findOneAndReplace(getFilter(doc), doc, options);
                    logger.info("Document upserted");
                }                   
            }               
        } catch (Exception e) {
            logger.error("Error while upserting document",e);
            collection =null;
            Mailer.sendmail(eventId, String.valueOf(docs), e, Mailer.FAILURE);
            retryCount++;
            waitTime*=retryCount;
            try {
                Thread.sleep(waitTime);
            } catch (InterruptedException e1) {
                logger.error("Thread interuupted in sleep", e1);
            }
        }   
    }
    logger.info("OrclToMngSyncWriter terminated " + Thread.currentThread().getName());
}
项目:mongo-obj-framework    文件:SmofOpOptionsImpl.java   
private void setSort(final FindOneAndReplaceOptions options) {
    if(sort != null) {
        options.sort(sort);
    }
}
项目:mongo-obj-framework    文件:SmofOpOptionsImpl.java   
private void setProjection(final FindOneAndReplaceOptions options) {
    if(projection != null) {
        options.projection(projection);
    }
}
项目:mongo-obj-framework    文件:SmofOpOptionsImpl.java   
private void setMaxTime(final FindOneAndReplaceOptions options) {
    if(maxTime != null) {
        options.maxTime(maxTime.getLeft(), maxTime.getRight());
    }
}
项目:mongo-java-driver-rx    文件:MongoCollectionImpl.java   
@Override
public Observable<TDocument> findOneAndReplace(final Bson filter, final TDocument replacement) {
    return findOneAndReplace(filter, replacement, new FindOneAndReplaceOptions());
}
项目:mongo-java-driver-reactivestreams    文件:MongoCollectionImpl.java   
@Override
public Publisher<TDocument> findOneAndReplace(final Bson filter, final TDocument replacement) {
    return findOneAndReplace(filter, replacement, new FindOneAndReplaceOptions());
}
项目:mongo-java-driver-reactivestreams    文件:MongoCollectionImpl.java   
@Override
public Publisher<TDocument> findOneAndReplace(final ClientSession clientSession, final Bson filter, final TDocument replacement) {
    return findOneAndReplace(clientSession, filter, replacement, new FindOneAndReplaceOptions());
}
项目:mongo-java-driver-rx    文件:MongoCollection.java   
/**
 * Atomically find a document and replace it.
 *
 * @param filter      the query filter to apply the the replace operation
 * @param replacement the replacement document
 * @param options     the options to apply to the operation
 * @return an Observable with a single element the document that was replaced.  Depending on the value of the {@code returnOriginal}
 * property, this will either be the document as it was before the update or as it is after the update.
 * If no documents matched the query filter, then the observer will complete without emitting any items
 */
Observable<TDocument> findOneAndReplace(Bson filter, TDocument replacement, FindOneAndReplaceOptions options);
项目:mongo-java-driver-reactivestreams    文件:MongoCollection.java   
/**
 * Atomically find a document and replace it.
 *
 * @param filter      the query filter to apply the the replace operation
 * @param replacement the replacement document
 * @param options     the options to apply to the operation
 * @return a publisher with a single element the document that was replaced.  Depending on the value of the {@code returnOriginal}
 * property, this will either be the document as it was before the update or as it is after the update.  If no documents matched the
 * query filter, then null will be returned
 */
Publisher<TDocument> findOneAndReplace(Bson filter, TDocument replacement, FindOneAndReplaceOptions options);
项目:mongo-java-driver-reactivestreams    文件:MongoCollection.java   
/**
 * Atomically find a document and replace it.
 *
 * @param clientSession the client session with which to associate this operation
 * @param filter      the query filter to apply the the replace operation
 * @param replacement the replacement document
 * @param options     the options to apply to the operation
 * @return a publisher with a single element the document that was replaced.  Depending on the value of the {@code returnOriginal}
 * property, this will either be the document as it was before the update or as it is after the update.  If no documents matched the
 * query filter, then null will be returned
 * @mongodb.server.release 3.6
 * @since 1.7
 */
Publisher<TDocument> findOneAndReplace(ClientSession clientSession, Bson filter, TDocument replacement,
                                       FindOneAndReplaceOptions options);
项目:mongo-obj-framework    文件:SmofOpOptions.java   
FindOneAndReplaceOptions toFindOneAndReplace();