MongoDB C++ Driver  legacy-1.1.2
Public Member Functions | List of all members
mongo::DBClientBase Class Referenceabstract

abstract class that implements the core db operations More...

#include <dbclientinterface.h>

+ Inheritance diagram for mongo::DBClientBase:

Public Member Functions

virtual std::auto_ptr< DBClientCursorquery (const std::string &ns, Query query, int nToReturn=0, int nToSkip=0, const BSONObj *fieldsToReturn=0, int queryOptions=0, int batchSize=0)
 send a query to the database. More...
 
virtual void parallelScan (const StringData &ns, int numCursors, std::vector< DBClientCursor * > *cursors, stdx::function< DBClientBase *()> connectionFactory)
 Returns a list of up to 'numCursors' cursors that can be iterated concurrently. More...
 
virtual unsigned long long query (stdx::function< void(const BSONObj &)> f, const std::string &ns, Query query, const BSONObj *fieldsToReturn=0, int queryOptions=0)
 Uses QueryOption_Exhaust, when available. More...
 
virtual std::auto_ptr< DBClientCursorgetMore (const std::string &ns, long long cursorId, int nToReturn=0, int options=0)
 don't use this - called automatically by DBClientCursor for you More...
 
virtual void insert (const std::string &ns, BSONObj obj, int flags=0, const WriteConcern *wc=NULL)
 insert an object into the database
 
virtual void insert (const std::string &ns, const std::vector< BSONObj > &v, int flags=0, const WriteConcern *wc=NULL)
 insert a vector of objects into the database
 
virtual void update (const std::string &ns, Query query, BSONObj obj, bool upsert=false, bool multi=false, const WriteConcern *wc=NULL)
 updates objects matching query
 
BSONObj findAndModify (const StringData &ns, const BSONObj &query, const BSONObj &update, bool upsert=false, bool returnNew=false, const BSONObj &sort=BSONObj(), const BSONObj &fields=BSONObj(), const WriteConcern *wc=NULL, bool bypassDocumentValidation=false)
 Modifies and returns a single document. More...
 
BSONObj findAndRemove (const StringData &ns, const BSONObj &query, const BSONObj &sort=BSONObj(), const BSONObj &fields=BSONObj(), const WriteConcern *wc=NULL)
 Removes and returns a single document. More...
 
virtual BulkOperationBuilder initializeUnorderedBulkOp (const std::string &ns)
 Initializes an unordered bulk operation by returning an object that can be used to enqueue multiple operations for batch execution. More...
 
virtual BulkOperationBuilder initializeOrderedBulkOp (const std::string &ns)
 Initializes an ordered bulk operation by returning an object that can be used to enqueue multiple operations for batch execution. More...
 
virtual void remove (const std::string &ns, Query q, bool justOne=0, const WriteConcern *wc=NULL)
 remove matching objects from the database More...
 
virtual bool isStillConnected ()=0
 if not checked recently, checks whether the underlying socket/sockets are still valid
 
- Public Member Functions inherited from mongo::DBClientWithCommands
bool simpleCommand (const std::string &dbname, BSONObj *info, const std::string &command)
 helper function. More...
 
virtual bool runCommand (const std::string &dbname, const BSONObj &cmd, BSONObj &info, int options=0)
 Run a database command. More...
 
void auth (const BSONObj &params)
 Authenticate a user. More...
 
bool auth (const std::string &dbname, const std::string &username, const std::string &pwd, std::string &errmsg, bool digestPassword=true)
 Authorize access to a particular database. More...
 
virtual void logout (const std::string &dbname, BSONObj &info)
 Logs out the connection for the given database. More...
 
virtual unsigned long long count (const std::string &ns, const Query &query=Query(), int options=0, int limit=0, int skip=0)
 count number of objects in collection ns that match the query criteria specified throws UserAssertion if database returns an error
 
virtual bool isMaster (bool &isMaster, BSONObj *info=0)
 returns true in isMaster parm if this db is the current master of a replica pair. More...
 
bool createCollection (const std::string &ns, long long size=0, bool capped=false, int max=0, BSONObj *info=0)
 Create a new collection in the database. More...
 
bool createCollectionWithOptions (const std::string &ns, long long size=0, bool capped=false, int max=0, const BSONObj &extraOptions=BSONObj(), BSONObj *info=0)
 Creates a new collection in the database. More...
 
std::string getLastError (const std::string &db, bool fsync=false, bool j=false, int w=0, int wtimeout=0)
 Get error result from the last write operation (insert/update/delete) on this connection. More...
 
std::string getLastError (bool fsync=false, bool j=false, int w=0, int wtimeout=0)
 Same as the form of getLastError that takes a dbname, but just uses the admin DB.
 
virtual BSONObj getLastErrorDetailed (const std::string &db, bool fsync=false, bool j=false, int w=0, int wtimeout=0)
 Get error result from the last write operation (insert/update/delete) on this connection. More...
 
virtual BSONObj getLastErrorDetailed (bool fsync=false, bool j=false, int w=0, int wtimeout=0)
 Same as the form of getLastErrorDetailed that takes a dbname, but just uses the admin DB.
 
BSONObj getPrevError ()
 Return the last error which has occurred, even if not the very last operation. More...
 
bool resetError ()
 Reset the previous error state for this connection (accessed via getLastError and getPrevError). More...
 
virtual bool dropCollection (const std::string &ns, BSONObj *info=NULL)
 Delete the specified collection. More...
 
bool repairDatabase (const std::string &dbname, BSONObj *info=0)
 Perform a repair and compaction of the specified database. More...
 
bool copyDatabase (const std::string &fromdb, const std::string &todb, const std::string &fromhost="", const std::string &mechanism="DEFAULT", const std::string &username="", const std::string &password="", BSONObj *info=0)
 Copy database from one server or name to another server or name. More...
 
BSONObj mapreduce (const std::string &ns, const std::string &jsmapf, const std::string &jsreducef, Query query=Query(), MROutput output=MRInline)
 Run a map/reduce job on the server. More...
 
void group (const StringData &ns, const StringData &jsreduce, std::vector< BSONObj > *output, const BSONObj &initial=BSONObj(), const Query &query=Query(), const BSONObj &key=BSONObj(), const StringData &finalize="")
 Groups documents in a collection by the specified key and performs simple aggregation functions such as computing counts and sums. More...
 
void groupWithKeyFunction (const StringData &ns, const StringData &jsreduce, std::vector< BSONObj > *output, const BSONObj &initial=BSONObj(), const Query &query=Query(), const StringData &jskey="", const StringData &finalize="")
 Does the same thing as 'group' but accepts a key function, 'jskey', that is used to create an object representing the key. More...
 
BSONObj distinct (const StringData &ns, const StringData &field, const Query &query=Query())
 Finds the distinct values for a specified field across a single collection and returns the results in an array. More...
 
bool eval (const std::string &dbname, const std::string &jscode, BSONObj &info, BSONElement &retValue, BSONObj *args=0, bool nolock=false)
 Run javascript code on the database server. More...
 
bool validate (const std::string &ns, bool scandata=true)
 validate a collection, checking for errors and reporting back statistics. More...
 
template<class T , class NumType >
 MONGO_CLIENT_DEPRECATED ("deprecated in MongoDB 3.0") bool eval(const std
 eval invocation with one parm to server and one numeric field (either int or double) returned
 
std::list< std::string > getDatabaseNames ()
 get a list of all the current databases uses the { listDatabases : 1 } command. More...
 
std::list< std::string > getCollectionNames (const std::string &db, const BSONObj &filter=BSONObj())
 Get a list of all the current collections in db.
 
std::list< BSONObjgetCollectionInfos (const std::string &db, const BSONObj &filter=BSONObj())
 { name : "<short collection name>", options : { } }
 
std::auto_ptr< DBClientCursorenumerateCollections (const std::string &db, const BSONObj &filter=BSONObj(), int batchSize=0)
 Returns a DBClientCursor with collection information objects. More...
 
void createIndex (const StringData &ns, const BSONObj &keys)
 Create an index on the collection 'ns' as described by the given keys. More...
 
virtual void createIndex (const StringData &ns, const IndexSpec &descriptor)
 Create an index on the collection 'ns' as described by the given descriptor. More...
 
virtual std::list< std::string > getIndexNames (const std::string &ns, int options=0)
 Enumerates all indexes on ns (a db-qualified collection name). More...
 
virtual void dropIndexes (const std::string &ns)
 drops all indexes for the collection
 
virtual bool dropDatabase (const std::string &dbname, BSONObj *info=0)
 Erase / drop an entire database.
 
- Public Member Functions inherited from mongo::DBClientInterface
virtual BSONObj findOne (const std::string &ns, const Query &query, const BSONObj *fieldsToReturn=0, int queryOptions=0)
 
void findN (std::vector< BSONObj > &out, const std::string &ns, Query query, int nToReturn, int nToSkip=0, const BSONObj *fieldsToReturn=0, int queryOptions=0, int batchSize=0)
 query N objects from the database into an array. More...
 
void save (const StringData &ns, const BSONObj &toSave, const WriteConcern *wc=NULL)
 Saves a document to a collection. More...
 
- Public Member Functions inherited from mongo::DBConnector
virtual bool call (Message &toSend, Message &response, bool assertOk=true, std::string *actualServer=0)=0
 actualServer is set to the actual server where they call went if there was a choice (SlaveOk)
 

Additional Inherited Members

- Public Types inherited from mongo::DBClientWithCommands
enum  ProfilingLevel
 The Mongo database provides built-in performance profiling capabilities. More...
 
typedef stdx::function< void(BSONObjBuilder *)> RunCommandHookFunc
 A function type for runCommand hooking; the function takes a pointer to a BSONObjBuilder and returns nothing. More...
 
typedef stdx::function< void(const BSONObj &, const std::string &)> PostRunCommandHookFunc
 Similar to above, but for running a function on a command response after a command has been run.
 
- Static Public Member Functions inherited from mongo::DBClientWithCommands
static std::string MONGO_CLIENT_FUNC getLastErrorString (const BSONObj &res)
 Can be called with the returned value from getLastErrorDetailed to extract an error string. More...
 
- Public Attributes inherited from mongo::DBClientWithCommands
logger::LogSeverity _logLevel
 controls how chatty the client is about network errors & such. More...
 
- Protected Member Functions inherited from mongo::DBClientWithCommands
bool isOk (const BSONObj &)
 if the result of a command is ok
 
bool isNotMasterErrorString (const BSONElement &e)
 if the element contains a not master error
 
QueryOptions availableOptions ()
 Look up the options available on this client. More...
 
bool _authMongoCR (const std::string &dbname, const std::string &username, const std::string &pwd, BSONObj *info, bool digestPassword)
 Use the MONGODB-CR protocol to authenticate as "username" against the database "dbname", with the given password. More...
 
bool _authX509 (const std::string &dbname, const std::string &username, BSONObj *info)
 Use the MONGODB-X509 protocol to authenticate as "username. More...
 
- Protected Attributes inherited from mongo::DBClientWithCommands
RunCommandHookFunc _runCommandHook
 These functions will be executed by the driver on runCommand calls.
 

Detailed Description

abstract class that implements the core db operations

Member Function Documentation

BSONObj mongo::DBClientBase::findAndModify ( const StringData ns,
const BSONObj query,
const BSONObj update,
bool  upsert = false,
bool  returnNew = false,
const BSONObj sort = BSONObj(),
const BSONObj fields = BSONObj(),
const WriteConcern wc = NULL,
bool  bypassDocumentValidation = false 
)

Modifies and returns a single document.

Note
By default, the returned document does not include modifications made on update.
Parameters
nsNamespace on which to perform this findAndModify.
updateUpdate document to be applied.
queryFilter for the update.
upsertInsert if object does not exist.
sortSort for the filter.
newReturn the updated rather than original object.
fieldsFields to return. Specifies inclusion with 1, "{<field1>: 1, ...}"
wcThe write concern for this operation.
BSONObj mongo::DBClientBase::findAndRemove ( const StringData ns,
const BSONObj query,
const BSONObj sort = BSONObj(),
const BSONObj fields = BSONObj(),
const WriteConcern wc = NULL 
)

Removes and returns a single document.

Note
By default, the returned document does not include modifications made on update.
Parameters
nsNamespace on which to perform this findAndModify.
queryFilter for the update.
sortSort for the filter.
fieldsFields to return. Specifies inclusion with 1, "{<field1>: 1, ...}"
wcThe write concern for this operation.
virtual std::auto_ptr<DBClientCursor> mongo::DBClientBase::getMore ( const std::string &  ns,
long long  cursorId,
int  nToReturn = 0,
int  options = 0 
)
virtual

don't use this - called automatically by DBClientCursor for you

Parameters
cursorIdid of cursor to retrieve
Returns
an handle to a previously allocated cursor
Exceptions
AssertionException

Implements mongo::DBClientInterface.

virtual BulkOperationBuilder mongo::DBClientBase::initializeOrderedBulkOp ( const std::string &  ns)
virtual

Initializes an ordered bulk operation by returning an object that can be used to enqueue multiple operations for batch execution.

Parameters
nsNamespace on which to apply the operations.
See also
BulkOperationBuilder
virtual BulkOperationBuilder mongo::DBClientBase::initializeUnorderedBulkOp ( const std::string &  ns)
virtual

Initializes an unordered bulk operation by returning an object that can be used to enqueue multiple operations for batch execution.

Parameters
nsNamespace on which to apply the operations.
See also
BulkOperationBuilder
virtual void mongo::DBClientBase::parallelScan ( const StringData ns,
int  numCursors,
std::vector< DBClientCursor * > *  cursors,
stdx::function< DBClientBase *()>  connectionFactory 
)
virtual

Returns a list of up to 'numCursors' cursors that can be iterated concurrently.

As long as the collection is not modified during scanning, each document appears once in one of the cursors' result sets.

Note
Warning: One must delete the cursors after use.
Warning: One must delete any new connections created by the connection factory after use.
See also
example usage in dbclient_test.cpp -> DBClientTest/ParallelCollectionScan
Parameters
nsThe namespace to scan
numCursorsNumber of cursors to return. You may get back less than you asked for.
cursorsOutput vector to hold cursors created for this scan.
connectionFactoryFunction that returns a pointer to a DBClientBase for use by newly created cursors. The function takes zero parameters but additional parameters may be bound (if required) using std::bind. See the example listed above for more info.
virtual std::auto_ptr<DBClientCursor> mongo::DBClientBase::query ( const std::string &  ns,
Query  query,
int  nToReturn = 0,
int  nToSkip = 0,
const BSONObj fieldsToReturn = 0,
int  queryOptions = 0,
int  batchSize = 0 
)
virtual

send a query to the database.

Parameters
nsnamespace to query, format is <dbname>.<collectname>[.<collectname>]*
queryquery to perform on the collection. this is a BSONObj (binary JSON) You may format as { query: { ... }, orderby: { ... } } to specify a sort order.
nToReturnn to return (i.e., limit). 0 = unlimited
nToSkipstart with the nth item
fieldsToReturnoptional template of which fields to select. if unspecified, returns all fields
queryOptionssee options enum at top of this file
Returns
cursor. 0 if error (connection failure)
Exceptions
AssertionException

Implements mongo::DBClientInterface.

Reimplemented in mongo::DBClientConnection, and mongo::DBClientReplicaSet.

virtual unsigned long long mongo::DBClientBase::query ( stdx::function< void(const BSONObj &)>  f,
const std::string &  ns,
Query  query,
const BSONObj fieldsToReturn = 0,
int  queryOptions = 0 
)
virtual

Uses QueryOption_Exhaust, when available.

Exhaust mode sends back all data queries as fast as possible, with no back-and-forth for OP_GETMORE. If you are certain you will exhaust the query, it could be useful.

Use the DBClientCursorBatchIterator version, below, if you want to do items in large blocks, perhaps to avoid granular locking and such.

virtual void mongo::DBClientBase::remove ( const std::string &  ns,
Query  q,
bool  justOne = 0,
const WriteConcern wc = NULL 
)
virtual

remove matching objects from the database

Parameters
justOneif this true, then once a single match is found will stop

Implements mongo::DBClientInterface.


The documentation for this class was generated from the following file: