/** * Updates a single document that matches. * @return number of updated documents. 0 or 1 */ public FluentFuture<Integer> updateFirst() { return repository.doUpdateFirst(criteria, collectRequiredUpdate(), new FindOneAndUpdateOptions()); }
@Override @Nullable public TDocument findOneAndUpdate(final Bson filter, final Bson update) { return findOneAndUpdate(filter, update, new FindOneAndUpdateOptions()); }
@Override @Nullable public TDocument findOneAndUpdate(final ClientSession clientSession, final Bson filter, final Bson update) { return findOneAndUpdate(clientSession, filter, update, new FindOneAndUpdateOptions()); }
private void initializeClusterInstanceVersion() { String databaseName = CommonUtils.getApplication(this.endpoint).replaceAll("\\W", "_"); MongoDatabase database = this.mongoClient.getDatabase(databaseName); MongoCollection<Document> instances = database.getCollection(CONSTANTS_TB_INSTS); Bson condition = Filters.eq("_id", this.endpoint); Document increases = new Document(); increases.append("version", 1L); Document document = new Document(); document.append("$inc", increases); FindOneAndUpdateOptions options = new FindOneAndUpdateOptions(); options.upsert(true); Document target = instances.findOneAndUpdate(condition, document, new FindOneAndUpdateOptions().upsert(true)); this.instanceVersion = (target == null) ? 1 : (target.getLong("version") + 1); }
private FindOneAndUpdateOptions convertToFindOneAndUpdateOptions(FindAndModifyOptions options, Document fields, Document sort) { FindOneAndUpdateOptions result = new FindOneAndUpdateOptions(); result = result.projection(fields).sort(sort).upsert(options.isUpsert()); if (options.isReturnNew()) { result = result.returnDocument(ReturnDocument.AFTER); } else { result = result.returnDocument(ReturnDocument.BEFORE); } result = options.getCollation().map(Collation::toMongoCollation).map(result::collation).orElse(result); return result; } }
public Document doInCollection(MongoCollection<Document> collection) throws MongoException, DataAccessException { FindOneAndUpdateOptions opts = new FindOneAndUpdateOptions(); opts.sort(sort); if (options.isUpsert()) { opts.upsert(true); } opts.projection(fields); if (options.isReturnNew()) { opts.returnDocument(ReturnDocument.AFTER); } options.getCollation().map(Collation::toMongoCollation).ifPresent(opts::collation); return collection.findOneAndUpdate(query, update, opts); } }
private FindOneAndUpdateOptions convertToFindOneAndUpdateOptions(FindAndModifyOptions options, Document fields, Document sort) { FindOneAndUpdateOptions result = new FindOneAndUpdateOptions(); result = result.projection(fields).sort(sort).upsert(options.isUpsert()); if (options.isReturnNew()) { result = result.returnDocument(ReturnDocument.AFTER); } else { result = result.returnDocument(ReturnDocument.BEFORE); } result = options.getCollation().map(Collation::toMongoCollation).map(result::collation).orElse(result); return result; } }
public Document doInCollection(MongoCollection<Document> collection) throws MongoException, DataAccessException { FindOneAndUpdateOptions opts = new FindOneAndUpdateOptions(); opts.sort(sort); if (options.isUpsert()) { opts.upsert(true); } opts.projection(fields); if (options.isReturnNew()) { opts.returnDocument(ReturnDocument.AFTER); } options.getCollation().map(Collation::toMongoCollation).ifPresent(opts::collation); return collection.findOneAndUpdate(query, update, opts); } }
public synchronized void persistToStore() { if (!config.persistent || lastVal == null) { return; } if (LOG.isDebugEnabled()) { LOG.debug("Persisting lastVal={} to store, collection: {}", lastVal, config.collection); } BasicDBObject updateObj = new BasicDBObject().append("$set", new BasicDBObject(config.field, lastVal)); FindOneAndUpdateOptions options = new FindOneAndUpdateOptions() .returnDocument(ReturnDocument.AFTER); trackingObj = dbCol.findOneAndUpdate(trackingObj, updateObj, options); }
@Override @Nullable public TDocument findOneAndUpdate(final Bson filter, final Bson update) { return findOneAndUpdate(filter, update, new FindOneAndUpdateOptions()); }
@Override @Nullable public TDocument findOneAndUpdate(final ClientSession clientSession, final Bson filter, final Bson update) { return findOneAndUpdate(clientSession, filter, update, new FindOneAndUpdateOptions()); }
@Override @Nullable public TDocument findOneAndUpdate(final Bson filter, final Bson update) { return findOneAndUpdate(filter, update, new FindOneAndUpdateOptions()); }
@Override @Nullable public TDocument findOneAndUpdate(final ClientSession clientSession, final Bson filter, final Bson update) { return findOneAndUpdate(clientSession, filter, update, new FindOneAndUpdateOptions()); }
/** * Updates a single document that matches. * @return number of updated documents. 0 or 1 */ public FluentFuture<Integer> updateFirst() { return repository.doUpdateFirst(criteria, collectRequiredUpdate(), new FindOneAndUpdateOptions()); }
Document entityDocument = new Document(); entityDocument.append("fname","123"); entityDocument.append("lname","456"); entityDocument.append("dob","00"); entityDocument.append("address","789") Document doc = mongoDatabase.getCollection("entity").findOneAndUpdate( new Document("entityId", 12), new Document("$push", new Document("nameIdentity", entityDocument)), new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) ); System.out.println(doc.toJson());
@Test public void testFineOneAndUpdateReturnNew() { collection.insertOne(json("_id: 1, a: 1, b: {c: 1}")); Document query = json("_id: 1"); Document update = json("$inc: {a: 1, 'b.c': 1}"); Document result = collection.findOneAndUpdate(query, update, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)); assertThat(result).isEqualTo(json("_id: 1, a: 2, b: {c: 2}")); }
@Test public void testFindOneAndUpdateFields() throws Exception { collection.insertOne(json("_id: 1, a: 1")); Document result = collection.findOneAndUpdate(json("_id: 1"), json("$inc: {a: 1}"), new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)); assertThat(result).isEqualTo(json("_id: 1, a: 2")); }
@Test public void testFineOneAndUpdateMax() { collection.insertOne(json("_id: 1, a: 1, b: {c: 1}")); Document query = json("_id: 1"); Document update = json("$max: {a: 2, 'b.c': 2, d : 'd'}"); Document result = collection.findOneAndUpdate(query, update, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)); assertThat(result).isEqualTo(json("_id: 1, a: 2, b: {c: 2}, d : 'd'")); }
@Test public void testFindOneAndUpdateUpsert() { Document result = collection.findOneAndUpdate(json("_id: 1"), json("$inc: {a: 1}"), new FindOneAndUpdateOptions().upsert(true).returnDocument(ReturnDocument.AFTER)); assertThat(result).isEqualTo(json("_id: 1, a: 1")); assertThat(collection.find().first()).isEqualTo(json("_id: 1, a: 1")); }
@Test public void testFindOneAndUpdateUpsertReturnBefore() { Document result = collection.findOneAndUpdate(json("_id: 1"), json("$inc: {a: 1}"), new FindOneAndUpdateOptions().upsert(true).returnDocument(ReturnDocument.BEFORE)); assertThat(result).isEqualTo(json("")); assertThat(collection.find().first()).isEqualTo(json("_id: 1, a: 1")); }