Package dev.morphia

Class DatastoreImpl

  • All Implemented Interfaces:
    AdvancedDatastore, Datastore
    Direct Known Subclasses:
    MorphiaSessionImpl

    @MorphiaInternal
    public class DatastoreImpl
    extends Object
    implements AdvancedDatastore
    A generic (type-safe) wrapper around mongodb collections
    Developer note.
    This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
    • Constructor Detail

      • DatastoreImpl

        protected DatastoreImpl​(DatastoreImpl datastore)
        Copy constructor for a datastore
        Parameters:
        datastore - the datastore to clone
        Since:
        2.0
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
    • Method Detail

      • insert

        public <T> void insert​(T entity,
                               InsertOneOptions options)
        Description copied from interface: Datastore
        Inserts an entity in to the mapped collection.
        Specified by:
        insert in interface Datastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        entity - the entity to insert
        options - the options to apply to the insert operation
      • insert

        public <T> void insert​(List<T> entities,
                               InsertManyOptions options)
        Description copied from interface: Datastore
        Inserts entities in to the mapped collection.
        Specified by:
        insert in interface Datastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        entities - the entities to insert
        options - the options to apply to the insert operation
      • aggregate

        public <T> Aggregation<T> aggregate​(Class<T> source)
        Description copied from interface: Datastore
        Returns a new query bound to the kind (a specific MongoCollection)
        Specified by:
        aggregate in interface Datastore
        Type Parameters:
        T - the source type
        Parameters:
        source - The class to create aggregation against
        Returns:
        the aggregation pipeline
      • createUpdateOperations

        public <T> UpdateOperations<T> createUpdateOperations​(Class<T> clazz)
        Description copied from interface: Datastore
        The builder for all update operations
        Specified by:
        createUpdateOperations in interface Datastore
        Type Parameters:
        T - the type to update
        Parameters:
        clazz - the type to update
        Returns:
        the new UpdateOperations instance
      • configureCollection

        @NonNull
        @MorphiaInternal
        public <T> MongoCollection<T> configureCollection​(dev.morphia.internal.CollectionConfiguration options,
                                                          MongoCollection<T> collection)
        Applies configuration options to the collection
        Type Parameters:
        T - the collection type
        Parameters:
        options - the options to apply
        collection - the collection to configure
        Returns:
        the configured collection
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
      • delete

        public <T> DeleteResult delete​(T entity,
                                       DeleteOptions options)
        Deletes the given entity (by @Id), with the WriteConcern
        Specified by:
        delete in interface Datastore
        Type Parameters:
        T - the type to delete
        Parameters:
        entity - the entity to delete
        options - the options to use when deleting
        Returns:
        results of the delete
      • delete

        public <T> DeleteResult delete​(T entity)
        Description copied from interface: Datastore
        Deletes the given entity (by @Id)
        Specified by:
        delete in interface Datastore
        Type Parameters:
        T - the type to delete
        Parameters:
        entity - the entity to delete
        Returns:
        results of the delete
      • ensureIndexes

        public void ensureIndexes()
        Description copied from interface: Datastore
        Ensures (creating if necessary) the indexes found during class mapping
        Specified by:
        ensureIndexes in interface Datastore
        See Also:
        Indexes, Indexed, Text
      • ensureIndexes

        public <T> void ensureIndexes​(Class<T> type)
      • find

        public <T> Query<T> find​(Class<T> type)
        Description copied from interface: Datastore
        Find instances of a type
        Specified by:
        find in interface Datastore
        Type Parameters:
        T - the type to query
        Parameters:
        type - the class to use for mapping the results
        Returns:
        the query
      • find

        public <T> Query<T> find​(Class<T> type,
                                 Document nativeQuery)
        Description copied from interface: Datastore
        Find instances of a type using a native query. This method is intended as an aid when copying queries from external sources such as the shell or Compass whose structure is already in json form.
        Specified by:
        find in interface Datastore
        Type Parameters:
        T - the type to query
        Parameters:
        type - the class to use for mapping the results
        nativeQuery - the full query structure to use for this Query
        Returns:
        the query
      • find

        public <T> Query<T> find​(String collection,
                                 Class<T> type)
        Description copied from interface: Datastore
        Find all instances by type from an alternate collection
        Specified by:
        find in interface Datastore
        Type Parameters:
        T - the type to query
        Parameters:
        collection - the actual collection to query. This overrides any mapped on collection on type.
        type - the class to use for mapping the results
        Returns:
        the query
      • find

        public <T> Query<T> find​(String collection)
        Description copied from interface: Datastore
        Find all instances by type in a different collection than what is mapped on the class given.
        Specified by:
        find in interface Datastore
        Type Parameters:
        T - the type to query
        Parameters:
        collection - the collection to query against
        Returns:
        the query
      • getCollection

        public <T> MongoCollection<T> getCollection​(Class<T> type)
        Specified by:
        getCollection in interface Datastore
        Type Parameters:
        T - the class type
        Parameters:
        type - the type look up
        Returns:
        the collection mapped for this class
      • getLoggedQuery

        public String getLoggedQuery​(FindOptions options)
        Specified by:
        getLoggedQuery in interface Datastore
        Parameters:
        options - the options used when requesting logging
        Returns:
        the logged query
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
      • replace

        public <T> T replace​(T entity,
                             ReplaceOptions options)
        Description copied from interface: Datastore
        Replaces a document in the database
        Specified by:
        replace in interface Datastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        entity - the entity to replace
        options - the options to apply to the replace operation
        Returns:
        the replaced entity
      • ensureCaps

        public void ensureCaps()
        Description copied from interface: Datastore
        ensure capped collections for Entity(s)
        Specified by:
        ensureCaps in interface Datastore
      • merge

        public <T> T merge​(T entity,
                           InsertOneOptions options)
        Description copied from interface: Datastore
        Work as if you did an update with each field in the entity doing a $set; Only at the top level of the entity.
        Specified by:
        merge in interface Datastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        entity - the entity to merge back in to the database
        options - the options to apply
        Returns:
        the new merged entity. NOTE: this is a database fetch.
      • getMongoClient

        protected MongoClient getMongoClient()
      • getMapper

        public Mapper getMapper()
        Specified by:
        getMapper in interface Datastore
        Returns:
        the Mapper used by this Datastore
      • shardCollections

        public void shardCollections()
        Description copied from interface: Datastore
        Shards any collections with sharding definitions.
        Specified by:
        shardCollections in interface Datastore
      • merge

        public <T> T merge​(T entity)
        Description copied from interface: Datastore
        Work as if you did an update with each field in the entity doing a $set; Only at the top level of the entity.
        Specified by:
        merge in interface Datastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        entity - the entity to merge back in to the database
        Returns:
        the new merged entity. NOTE: this is a database fetch.
      • save

        public <T> List<T> save​(List<T> entities,
                                InsertManyOptions options)
        Description copied from interface: Datastore
        Saves the entities (Objects) and updates the @Id field
        Specified by:
        save in interface Datastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        entities - the entities to save
        options - the options to apply to the save operation
        Returns:
        the saved entities
      • queryByExample

        public <T> Query<T> queryByExample​(T example)
        Description copied from interface: Datastore
        Returns a new query based on the example object
        Specified by:
        queryByExample in interface Datastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        example - the example entity to use when creating the query
        Returns:
        the query
      • refresh

        public <T> void refresh​(T entity)
        Description copied from interface: Datastore
        Refreshes an existing entity to its current state in the database. Essentially, any existing mapped state is replaced by the latest persisted state while preserving the entity's reference and object identity.
        Specified by:
        refresh in interface Datastore
        Type Parameters:
        T - the entity type
        Parameters:
        entity - the entity to refresh
      • save

        public <T> T save​(T entity,
                          InsertOneOptions options)
        Description copied from interface: Datastore
        Saves an entity (Object) and updates the @Id field
        Specified by:
        save in interface Datastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        entity - the entity to save
        options - the options to apply to the save operation
        Returns:
        the saved entity
      • withTransaction

        public <T> T withTransaction​(MorphiaTransaction<T> body)
        Specified by:
        withTransaction in interface Datastore
        Type Parameters:
        T - the return type
        Parameters:
        body - the transaction wrapper
        Returns:
        the return value
      • withTransaction

        public <T> T withTransaction​(ClientSessionOptions options,
                                     MorphiaTransaction<T> transaction)
        Specified by:
        withTransaction in interface Datastore
        Type Parameters:
        T - the return type
        Parameters:
        options - the session options to apply
        transaction - the transaction wrapper
        Returns:
        the return value
      • replace

        public <T> List<T> replace​(List<T> entities,
                                   ReplaceOptions options)
        Description copied from interface: Datastore
        Replaces a list of documents in the database
        Specified by:
        replace in interface Datastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        entities - the entities to replace
        options - the options to apply to the replace operation
        Returns:
        the saved entities
      • createQuery

        public <T> Query<T> createQuery​(Class<T> type,
                                        Document q)
        Specified by:
        createQuery in interface AdvancedDatastore
        Type Parameters:
        T - The type of the entity
        Parameters:
        type - the class of objects to be returned
        q - the query which will be passed to a QueryFactory
        Returns:
        Query for the specified class type
      • queryByExample

        public <T> Query<T> queryByExample​(String collection,
                                           T ex)
        Description copied from interface: AdvancedDatastore
        Returns a new query based on the example object
        Specified by:
        queryByExample in interface AdvancedDatastore
        Type Parameters:
        T - the type of the entity
        Parameters:
        collection - the collection to query
        ex - the example entity to use when building the query
        Returns:
        the query
      • enableValidation

        @MorphiaInternal
        public void enableValidation​(EntityModel model,
                                     Validation validation)
        Parameters:
        model - internal
        validation - internal
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.