DatabaseCommands

The DatabaseCommands is the actual engine behind the Client API. The Client API introduces features like Unit-of-Work and transactions. Therefore, while the DatabaseCommands are exposed in the Client API to allow for advanced usages, all operations that are performed directly against them are NOT transactional, and are NOT safe by default.

A DatabaseCommands object is available from both the session object and the IDocumentStore object.

Document operations

// Puts the document in the database with the specified key.
    PutResult Put(string key, Guid? etag, RavenJObject document, RavenJObject metadata);

    // Deletes the document with the specified key
    void Delete(string key, Guid? etag);

    // Retrieves the document for the specified key.
    JsonDocument Get(string key);

    // Retrieves documents with the specified ids, optionally specifying includes to fetch along.
    MultiLoadResult Get(string[] ids, string[] includes);
    
    // Retrieves documents for the specified key prefix    
    JsonDocument[] StartsWith(string keyPrefix, int start, int pageSize);

Attachments

// Puts a byte array as attachment with the specified key
    void PutAttachment(string key, Guid? etag, byte[] data, RavenJObject metadata);
    
    // Retrieves the attachment with the specified key.
    Attachment GetAttachment(string key);
    
    // Deletes the attachment with the specified key
    void DeleteAttachment(string key, Guid? etag);

Indexes

// Returns the names of all indexes that exist on the server
    string[] GetIndexNames(int start, int pageSize);
    
    // Resets the specified index
    void ResetIndex(string name);
    
    // Returns the index definition for the specified name
    IndexDefinition GetIndex(string name);
    
    // Creates an index with the specified name, based on an index definition
    string PutIndex(string name, IndexDefinition indexDef);
    string PutIndex(string name, IndexDefinition indexDef, bool overwrite);
    
    // Creates an index with the specified name, based on an index definition that is created by the supplied
    // IndexDefinitionBuilder
    string PutIndex<TDocument, TReduceResult>(string name, IndexDefinitionBuilder<TDocument, TReduceResult> indexDef);
    string PutIndex<TDocument, TReduceResult>(string name, IndexDefinitionBuilder<TDocument, TReduceResult> indexDef, bool overwrite);
    
    // Queries the specified index in the Raven flavored Lucene query syntax
    QueryResult Query(string index, IndexQuery query, string[] includes);
    
    // Deletes the specified index
    void DeleteIndex(string name);
    
    // Perform a set based deletes using the specified index, not allowing the operation
    // if the index is stale
    void DeleteByIndex(string indexName, IndexQuery queryToDelete);
    
    // Perform a set based deletes using the specified index
    void DeleteByIndex(string indexName, IndexQuery queryToDelete, bool allowStale);
    
    // Perform a set based update using the specified index, not allowing the operation
    // if the index is stale
    void UpdateByIndex(string indexName, IndexQuery queryToUpdate, PatchRequest[] patchRequests);
    
    // Perform a set based update using the specified index
    void UpdateByIndex(string indexName, IndexQuery queryToUpdate, PatchRequest[] patchRequests, bool allowStale);

Transaction API

// Commits the specified tx id
    void Commit(Guid txId);

    // Rollbacks the specified tx id.    
    void Rollback(Guid txId);
    
    // Gets a value indicating whether this DB supports promotable transactions
    bool SupportsPromotableTransactions { get; }
    
    // Promotes the transaction
    byte[] PromoteTransaction(Guid fromTxId);
    
    // Stores the recovery information
    void StoreRecoveryInformation(Guid resourceManagerId, Guid txId, byte[] recoveryInformation);

Misc

// Executed the specified commands as a single batch
    BatchResult[] Batch(IEnumerable<ICommandData> commandDatas);

    // Create a new instance of IDatabaseCommands that will interacts
    // with the specified database
    IDatabaseCommands ForDatabase(string database);

    // Returns a new IDatabaseCommands using the specified credentials
    IDatabaseCommands With(ICredentials credentialsForSession);
    
    // Create a new instance of IDatabaseCommands that will interact
    // with the root database. Useful if the database has works against a tenant database
    IDatabaseCommands GetRootDatabase();
    
    // Returns a list of suggestions based on the specified suggestion query
    SuggestionQueryResult Suggest(string index, SuggestionQuery suggestionQuery);
    
    // Get the all terms stored in the index for the specified field
    // You can page through the results by use fromValue parameter as the 
    // starting point for the next query
    IEnumerable<string> GetTerms(string index, string field, string fromValue, int pageSize);
    
    // Sends a patch request for a specific document, ignoring the document's Etag
    void Patch(string key, PatchRequest[] patches);
    
    // Sends a patch request for a specific document
    void Patch(string key, PatchRequest[] patches, Guid? etag);
    
    // Disable all caching within the given scope
    IDisposable DisableAllCaching();
    
    // Perform a single POST request containing multiple nested GET requests
    GetResponse[] MultiGet(GetRequest[] requests);

    // Gets or sets the operations headers
    NameValueCollection OperationsHeaders { get; set; }