Page tree
Skip to end of metadata
Go to start of metadata

CAST supports MongoDB via its NoSQL for Java extension. Details about how this support is provided for Java with Spring Data source code is discussed below.

Supported Libraries

LibraryVersionSupported
Spring Data MongoDB Up to: 3.2.x(tick)

Supported Operations

For Storing the data
 Insert Operation APIs
 Repository APIs
  • org.springframework.data.repository.CrudRepository.save
  • org.springframework.data.repository.CrudRepository.saveAll
  • org.springframework.data.repository.ReactiveCrudRepository.save
  • org.springframework.data.repository.ReactiveCrudRepository.saveAll
  • org.springframework.data.repository.MongoRepository.insert
  • org.springframework.data.repository.MongoRepository.save
  • org.springframework.data.repository.MongoRepository.saveAll
  • org.springframework.data.repository.ReactiveMongoRepository.saveAll
  • org.springframework.data.repository.MongoRepository.save
  • org.springframework.data.repository.ReactiveMongoRepository.insert
 Template and operation APIs
  • org.springframework.data.mongodb.core.MongoTemplate.insert
  • org.springframework.data.mongodb.core.MongoTemplate.insertAll
  • org.springframework.data.mongodb.core.MongoTemplate.save
  • org.springframework.data.mongodb.core.MongoTemplate.upsert
  • org.springframework.data.mongodb.core.BulkOperations.upsert
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.insert
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.insertAll
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.save
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.upsert
  • org.springframework.data.mongodb.core.MongoOperations.insert
  • org.springframework.data.mongodb.core.MongoOperations.insertAll
  • org.springframework.data.mongodb.core.MongoOperations.save
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.insert
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.insertAll
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.upsert
For Fetching the data
 Select Operation APIs
 Repository APIs
  • org.springframework.data.repository.CrudRepository.findAll
  • org.springframework.data.repository.CrudRepository.count
  • org.springframework.data.repository.CrudRepository.findById
  • org.springframework.data.repository.CrudRepository.findAllById
  • org.springframework.data.repository.CrudRepository.existsById
  • org.springframework.data.repository.PagingAndSortingRepository.findAll
  • org.springframework.data.repository.QueryByExampleExecutor.count
  • org.springframework.data.repository.QueryByExampleExecutor.exists
  • org.springframework.data.repository.QueryByExampleExecutor.findAll
  • org.springframework.data.repository.QueryByExampleExecutor.findOne
  • org.springframework.data.repository.ReactiveCrudRepository.findAll
  • org.springframework.data.repository.ReactiveCrudRepository.count
  • org.springframework.data.repository.ReactiveCrudRepository.findById
  • org.springframework.data.repository.ReactiveCrudRepository.findAllById
  • org.springframework.data.repository.ReactiveCrudRepository.existsById
  • org.springframework.data.repository.ReactiveQueryByExampleExecutor.count
  • org.springframework.data.repository.ReactiveQueryByExampleExecutor.exists
  • org.springframework.data.repository.ReactiveQueryByExampleExecutor.findAll
  • org.springframework.data.repository.ReactiveQueryByExampleExecutor.findOne
  • org.springframework.data.repository.ReactiveMongoRepository.findAll
  • org.springframework.data.repository.MongoRepository.findAll
  • org.springframework.data.repository.MongoRepository.count
  • org.springframework.data.repository.MongoRepository.findById
  • org.springframework.data.repository.MongoRepository.findAllById
  • org.springframework.data.repository.MongoRepository.existsById
  • org.springframework.data.repository.MongoRepository.findOne
  • org.springframework.data.repository.ReactiveMongoRepository.count
  • org.springframework.data.repository.ReactiveMongoRepository.findById
  • org.springframework.data.repository.ReactiveMongoRepository.findAllById
  • org.springframework.data.repository.ReactiveMongoRepository.existsById
  • org.springframework.data.repository.ReactiveMongoRepository.findOne
 Template and Operation APIs
  • org.springframework.data.mongodb.core.MongoTemplate.getCollection
  • org.springframework.data.mongodb.core.MongoTemplate.find
  • org.springframework.data.mongodb.core.MongoTemplate.findAll
  • org.springframework.data.mongodb.core.MongoTemplate.findAllAndRemove
  • org.springframework.data.mongodb.core.MongoTemplate.findAndModify
  • org.springframework.data.mongodb.core.MongoTemplate.findAndRemove
  • org.springframework.data.mongodb.core.MongoTemplate.findAndReplace
  • org.springframework.data.mongodb.core.MongoTemplate.findById
  • org.springframework.data.mongodb.core.MongoTemplate.findDistinct
  • org.springframework.data.mongodb.core.MongoTemplate.findOne
  • org.springframework.data.mongodb.core.MongoTemplate.exists
  • org.springframework.data.mongodb.core.MongoTemplate.count
  • org.springframework.data.mongodb.core.MongoTemplate.collectionExists
  • org.springframework.data.mongodb.core.MongoTemplate.stream
  • org.springframework.data.mongodb.core.MongoTemplate.group
  • org.springframework.data.mongodb.core.MongoTemplate.geoNear
  • org.springframework.data.mongodb.core.MongoTemplate.aggregate
  • org.springframework.data.mongodb.core.MongoTemplate.aggregateStream
  • org.springframework.data.mongodb.core.MongoTemplate.aggregateAndReturn
  • org.springframework.data.mongodb.core.MongoTemplate.executeQuery
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.getCollection
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.find
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findAll
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findAllAndRemove
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findAndModify
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findAndRemove
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findAndReplace
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findById
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findDistinct
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findOne
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.exists
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.count
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.collectionExists
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.stream
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.group
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.geoNear
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.aggregate
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.aggregateStream
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.aggregateAndReturn
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.executeQuery
  • org.springframework.data.mongodb.core.MongoOperations.aggregate
  • org.springframework.data.mongodb.core.MongoOperations.aggregateStream
  • org.springframework.data.mongodb.core.MongoOperations.aggregateAndReturn
  • org.springframework.data.mongodb.core.MongoOperations.collectionExists
  • org.springframework.data.mongodb.core.MongoOperations.count
  • org.springframework.data.mongodb.core.MongoOperations.exists
  • org.springframework.data.mongodb.core.MongoOperations.find
  • org.springframework.data.mongodb.core.MongoOperations.findAll
  • org.springframework.data.mongodb.core.MongoOperations.findAllAndRemove
  • org.springframework.data.mongodb.core.MongoOperations.findAndModify
  • org.springframework.data.mongodb.core.MongoOperations.findAndRemove
  • org.springframework.data.mongodb.core.MongoOperations.findAndReplace
  • org.springframework.data.mongodb.core.MongoOperations.findById
  • org.springframework.data.mongodb.core.MongoOperations.findOne
  • org.springframework.data.mongodb.core.MongoOperations.geoNear
  • org.springframework.data.mongodb.core.MongoOperations.getCollection
  • org.springframework.data.mongodb.core.MongoOperations.group
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.aggregate
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.aggregateStream
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.aggregateAndReturn
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.collectionExists
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.count
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.exists
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.find
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findAll
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findAllAndRemove
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findAndModify
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findAndRemove
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findAndReplace
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findById
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findOne
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.geoNear
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.getCollection
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.group


For Removing the data
 Delete Operation APIs
 Repository APIs
  • org.springframework.data.repository.CrudRepository.deleteAll
  • org.springframework.data.repository.CrudRepository.deleteById
  • org.springframework.data.repository.CrudRepository.delete
  • org.springframework.data.repository.ReactiveCrudRepository.deleteAll
  • org.springframework.data.repository.ReactiveCrudRepository.deleteById
  • org.springframework.data.repository.ReactiveCrudRepository.delete
  • org.springframework.data.repository.ReactiveMongoRepository.deleteAll
  • org.springframework.data.repository.ReactiveMongoRepository.deleteById
  • org.springframework.data.repository.ReactiveMongoRepository.delete
  • org.springframework.data.repository.MongoRepository.delete
  • org.springframework.data.repository.MongoRepository.deleteAll
  • org.springframework.data.repository.MongoRepository.deleteById
 Template and Operation APIs
  • org.springframework.data.mongodb.core.MongoTemplate.findAndRemove
  • org.springframework.data.mongodb.core.MongoTemplate.findAllAndRemove
  • org.springframework.data.mongodb.core.MongoTemplate.dropCollection
  • org.springframework.data.mongodb.core.BulkOperations.remove
  • org.springframework.data.mongodb.core.MongoTemplate.remove
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.remove
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findAndRemove
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findAllAndRemove
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.dropCollection
  • org.springframework.data.mongodb.core.ReactiveBulkOperations.remove
  • org.springframework.data.mongodb.core.MongoOperations.dropCollection
  • org.springframework.data.mongodb.core.MongoOperations.findAndRemove
  • org.springframework.data.mongodb.core.MongoOperations.findAllAndRemove
  • org.springframework.data.mongodb.core.MongoOperations.remove
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.dropCollection
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findAndRemove
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findAllAndRemove
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.remove
For Updating the data
 Update Operation APIs
 Template and Operation APIs
  • org.springframework.data.mongodb.core.MongoTemplate.upsert
  • org.springframework.data.mongodb.core.MongoTemplate.update
  • org.springframework.data.mongodb.core.MongoTemplate.updateFirst
  • org.springframework.data.mongodb.core.MongoTemplate.updateMulti
  • org.springframework.data.mongodb.core.MongoTemplate.findAndModify
  • org.springframework.data.mongodb.core.MongoTemplate.findAndReplace
  • org.springframework.data.mongodb.core.BulkOperations.updateOne
  • org.springframework.data.mongodb.core.BulkOperations.updateMulti
  • org.springframework.data.mongodb.core.BulkOperations.upsert
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.upsert
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.update
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.updateFirst
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.updateMulti
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findAndModify
  • org.springframework.data.mongodb.core.ReactiveMongoTemplate.findAndReplace
  • org.springframework.data.mongodb.core.ReactiveBulkOperations.updateOne
  • org.springframework.data.mongodb.core.ReactiveBulkOperations.updateMulti
  • org.springframework.data.mongodb.core.ReactiveBulkOperations.upsert
  • org.springframework.data.mongodb.core.MongoOperations.findAndModify
  • org.springframework.data.mongodb.core.MongoOperations.findAndReplace
  • org.springframework.data.mongodb.core.MongoOperations.upsert
  • org.springframework.data.mongodb.core.MongoOperations.updateFirst
  • org.springframework.data.mongodb.core.MongoOperations.updateMulti
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findAndModify
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.findAndReplace
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.upsert
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.updateFirst
  • org.springframework.data.mongodb.core.ReactiveMongoOperations.updateMulti

Objects

IconDescription

Java MongoDB database

Java MongoDB collection

Java unknown MongoDB database

Java unknown MongoDB collection

Links

Link typeSource and destination of linkMethods supported
parentLink

Between Mongo Objects (Collection → Database → Project)


useLinkBetween the caller Spring Data Java Method objects and Mongo Collection Object
  • mapReduce

useSelectLink

 Click here to expand...
  • find
  • findAll
  • findById
  • findAllById
  • findAll
  • count
  • existsById
  • exists
  • findAndRemove
  • findAllAndRemove
  • findAndReplace
  • findAndModify
  • findOne
  • stream
  • group
  • geoNear
  • aggregate
  • aggregateStream
  • aggregateAndReturn
  • executeQuery
  • getCollection
  • findDistinct
useUpdateLink
  • upsert
  • update
  • updateFirst
  • updateOne
  • updateMulti
  • findAndModify
  • findAndReplace
useDeleteLink
  • deleteAll
  • deleteById
  • delete
  • findAndRemove
  • dropCollection
  • remove
  • findAllAndRemove
useInsertLink
  • save
  • saveAll
  • insert
  • insertAll
  • upsert

What results can you expect

Once the analysis/snapshot generation has completed, you can view the results in the normal manner (for example via CAST Enlighten). Some examples are shown below.

Creation of database objects

With application.properties

 Click here to expand...
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=hc4

logging.level.org.springframework.data=debug
logging.level.=error

With Java configuration file

 Click here to expand...
package com.mkyong;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

import com.mongodb.Mongo;
import com.mongodb.MongoClient;

@Configuration
@EnableMongoRepositories
public class ApplicationConfig extends AbstractMongoConfiguration{
	 @Override
	 @Bean
	  protected String getDatabaseName() {
	    return "e-store";
	  }

	  @Override
	  protected String getMappingBasePackage() {
	    return "com.oreilly.springdata.mongodb";
	  }
	@Override
	@Bean
	public Mongo mongo() throws Exception {
		// TODO Auto-generated method stub
		return new Mongo("localhost");
	}
}

Insert Operation

 Click here to expand...
public Product getMrepefOne () {
	Product product = new Product("LN1", "London", 5.0f);
	productRepository.save(product);

	return productRepository.findOne("LN1");
}

 Click here to expand...
@Override
    public BulkWriteResult bulk(Collection<? extends T> objects) {
      Assert.notNull(objects, "Objects must not be null!");
      return mongoTemplate.bulkOps(bulkMode != null ? bulkMode : BulkMode.ORDERED, Product.class)
          .insert(new ArrayList<>(objects)).execute();
    }

Update Operation

 Update Operation
public String updateAlertStatus(String alertId) {

		LOGGER.debug("FanAlertsRepository.deleteAlert() with param{0}" + alertId);
		Query query = new Query();

		query.addCriteria(Criteria.where(AlertServiceConstants._ID_FILED).is(new ObjectId(alertId)));

		FanAlerts fanAlert = mongoOperation.findOne(query, FanAlerts.class,
				AlertServiceConstants.FAN_ALERTS_COLLECTION);
		if (fanAlert == null) {
			return AlertServiceConstants.failure;
	

Delete Operation

 Delete Operation
public Response deleteTn(String siteId, String tn) {
		DeleteResult deleteres = mongoCon.getCollection()
					.deleteOne(new Document().append(DETAILSSITE_IDEN, siteId).append(DETAILS_TN, tn));
}

Select Operation

 Click here to expand...
public GeoResults getProductByLocation (double longitude,double latitude,double distance){
	Point p = new Point(longitude, latitude);
    NearQuery nearQuery  = NearQuery.near(p, Metrics.KILOMETERS).maxDistance(distance);
    return mongoTemplate.geoNear(nearQuery, Product.class);
    
}

Query Methods 

 Query Method
@Query("{ 'age' : { $gt: ?0, $lt: ?1 } }")
    List<User> findUsersByAgeBetween(int ageGT, int ageLT);


Limitations

  • Resolution of Database and Collection is limited, "Unknown" is used when not resolved.
  • Query method results in link between query method and repository collection (domain entity) and not between the actual caller method and repository collection
  • No labels