本文整理汇总了C++中DBClientConnection::getLastError方法的典型用法代码示例。如果您正苦于以下问题:C++ DBClientConnection::getLastError方法的具体用法?C++ DBClientConnection::getLastError怎么用?C++ DBClientConnection::getLastError使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DBClientConnection
的用法示例。
在下文中一共展示了DBClientConnection::getLastError方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main() {
try {
cout << "connecting to localhost..." << endl;
DBClientConnection c;
c.connect("localhost");
cout << "connected ok" << endl;
unsigned long long count = c.count("test.foo");
cout << "count of exiting documents in collection test.foo : " << count << endl;
bo o = BSON( "hello" << "world" );
c.insert("test.foo", o);
string e = c.getLastError();
if( !e.empty() ) {
cout << "insert #1 failed: " << e << endl;
}
// make an index with a unique key constraint
c.ensureIndex("test.foo", BSON("hello"<<1), /*unique*/true);
c.insert("test.foo", o); // will cause a dup key error on "hello" field
cout << "we expect a dup key error here:" << endl;
cout << " " << c.getLastErrorDetailed().toString() << endl;
}
catch(DBException& e) {
cout << "caught DBException " << e.toString() << endl;
return 1;
}
return 0;
}
示例2: main
int main() {
try {
cout << "connecting to localhost..." << endl;
DBClientConnection c;
c.connect("localhost");
cout << "connected ok" << endl;
bo o = BSON( "hello" << "world" );
cout << "inserting..." << endl;
time_t start = time(0);
for( unsigned i = 0; i < 1000000; i++ ) {
c.insert("test.foo", o);
}
// wait until all operations applied
cout << "getlasterror returns: \"" << c.getLastError() << '"' << endl;
time_t done = time(0);
time_t dt = done-start;
cout << dt << " seconds " << 1000000/dt << " per second" << endl;
}
catch(DBException& e) {
cout << "caught DBException " << e.toString() << endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
示例3: setvalue
int em_mongodb::setvalue(std::string dbcoll,mongo::Query cond,BSONObj valObj,bool flag)
{
int ret = MDB_FAIL_SET;
DBClientConnection* pconn = getConn();
if(!pconn)
return ret;
pconn->update(dbcoll,cond,valObj,flag);
std::string errmsg = pconn->getLastError();
std::cout << "em_mongodb::setvalue: " << errmsg << std::endl;
if(errmsg.empty())
ret = MDB_RET_SUCCESS;
boost::mutex::scoped_lock lock(m_iomux);
m_connpool[pconn] = false;
sem_post(&m_jobsem);
return ret;
}
示例4: main
//.........这里部分代码省略.........
// update
{
BSONObj res = conn.findOne( ns , BSONObjBuilder().append( "name" , "eliot" ).obj() );
assert( ! strstr( res.getStringField( "name2" ) , "eliot" ) );
BSONObj after = BSONObjBuilder().appendElements( res ).append( "name2" , "h" ).obj();
conn.update( ns , BSONObjBuilder().append( "name" , "eliot2" ).obj() , after );
res = conn.findOne( ns , BSONObjBuilder().append( "name" , "eliot" ).obj() );
assert( ! strstr( res.getStringField( "name2" ) , "eliot" ) );
assert( conn.findOne( ns , BSONObjBuilder().append( "name" , "eliot2" ).obj() ).isEmpty() );
conn.update( ns , BSONObjBuilder().append( "name" , "eliot" ).obj() , after );
res = conn.findOne( ns , BSONObjBuilder().append( "name" , "eliot" ).obj() );
assert( strstr( res.getStringField( "name" ) , "eliot" ) );
assert( strstr( res.getStringField( "name2" ) , "h" ) );
assert( conn.findOne( ns , BSONObjBuilder().append( "name" , "eliot2" ).obj() ).isEmpty() );
// upsert
conn.update( ns , BSONObjBuilder().append( "name" , "eliot2" ).obj() , after , 1 );
assert( ! conn.findOne( ns , BSONObjBuilder().append( "name" , "eliot" ).obj() ).isEmpty() );
}
{ // ensure index
assert( conn.ensureIndex( ns , BSON( "name" << 1 ) ) );
assert( ! conn.ensureIndex( ns , BSON( "name" << 1 ) ) );
}
{ // hint related tests
assert( conn.findOne(ns, "{}")["name"].str() == "sara" );
assert( conn.findOne(ns, "{ name : 'eliot' }")["name"].str() == "eliot" );
assert( conn.getLastError() == "" );
// nonexistent index test
bool asserted = false;
try {
conn.findOne(ns, Query("{name:\"eliot\"}").hint("{foo:1}"));
}
catch ( ... ){
asserted = true;
}
assert( asserted );
//existing index
assert( conn.findOne(ns, Query("{name:'eliot'}").hint("{name:1}")).hasElement("name") );
// run validate
assert( conn.validate( ns ) );
}
{ // timestamp test
const char * tsns = "test.tstest1";
conn.dropCollection( tsns );
{
mongo::BSONObjBuilder b;
b.appendTimestamp( "ts" );
conn.insert( tsns , b.obj() );
}
mongo::BSONObj out = conn.findOne( tsns , mongo::BSONObj() );
Date_t oldTime = out["ts"].timestampTime();
unsigned int oldInc = out["ts"].timestampInc();
示例5: main
int main(int argc, char *argv[]) {
try {
cout << "mongoperf" << endl;
if( argc > 1 ) {
cout <<
"\n"
"usage:\n"
"\n"
" mongoperf < myjsonconfigfile\n"
"\n"
" {\n"
" nThreads:<n>, // number of threads\n"
" fileSizeMB:<n>, // test file size\n"
" sleepMicros:<n>, // pause for sleepMicros/nThreads between each operation\n"
" mmf:<bool>, // if true do i/o's via memory mapped files\n"
" r:<bool>, // do reads\n"
" w:<bool> // do writes\n"
" }\n"
"\n"
"most fields are optional.\n"
"non-mmf io is direct io (no caching). use a large file size to test making the heads\n"
" move significantly and to avoid i/o coalescing\n"
"mmf io uses caching (the file system cache).\n"
"\n"
<< endl;
return 0;
}
cout << "use -h for help" << endl;
char input[1024];
memset(input, 0, sizeof(input));
cin.read(input, 1000);
if( *input == 0 ) {
cout << "error no options found on stdin for mongoperf" << endl;
return 2;
}
string s = input;
str::stripTrailing(s, "\n\r\0x1a");
try {
options = fromjson(s);
}
catch(...) {
cout << s << endl;
cout << "couldn't parse json options" << endl;
return -1;
}
cout << "options:\n" << options.toString() << endl;
go();
#if 0
cout << "connecting to localhost..." << endl;
DBClientConnection c;
c.connect("localhost");
cout << "connected ok" << endl;
unsigned long long count = c.count("test.foo");
cout << "count of exiting documents in collection test.foo : " << count << endl;
bo o = BSON( "hello" << "world" );
c.insert("test.foo", o);
string e = c.getLastError();
if( !e.empty() ) {
cout << "insert #1 failed: " << e << endl;
}
// make an index with a unique key constraint
c.ensureIndex("test.foo", BSON("hello"<<1), /*unique*/true);
c.insert("test.foo", o); // will cause a dup key error on "hello" field
cout << "we expect a dup key error here:" << endl;
cout << " " << c.getLastErrorDetailed().toString() << endl;
#endif
}
catch(DBException& e) {
cout << "caught DBException " << e.toString() << endl;
return 1;
}
return 0;
}
示例6: main
//.........这里部分代码省略.........
//OTF2_GlobalDefReaderCallbacks_SetGroupCallback(global_def_callbacks, &GlobDefGroup_Register);
// registering callbacks and deleting callbacks handle
OTF2_Reader_RegisterGlobalDefCallbacks(reader, global_def_reader, global_def_callbacks, reader);
OTF2_GlobalDefReaderCallbacks_Delete( global_def_callbacks );
// reading all global definitions
uint64_t definitions_read = 0;
OTF2_Reader_ReadAllGlobalDefinitions( reader, global_def_reader, &definitions_read );
printf("Definitions_read = %"PRIu64"\n", definitions_read);
// DEFINITIONS READING END
cout << "numProcesses = " << numProcesses << endl;
// EVENTS READING START
OTF2_GlobalEvtReader* global_evt_reader = OTF2_Reader_GetGlobalEvtReader(reader);
// creating global event callbacks handle
OTF2_GlobalEvtReaderCallbacks* event_callbacks = OTF2_GlobalEvtReaderCallbacks_New();
// setting global event reader callbacks to handle
OTF2_GlobalEvtReaderCallbacks_SetEnterCallback( event_callbacks, &EnterCallback);
OTF2_GlobalEvtReaderCallbacks_SetLeaveCallback( event_callbacks, &LeaveCallback);
OTF2_GlobalEvtReaderCallbacks_SetMpiSendCallback(event_callbacks, &MPI_Send_print);
OTF2_GlobalEvtReaderCallbacks_SetMpiIsendCallback(event_callbacks, &MPI_Isend_print);
OTF2_GlobalEvtReaderCallbacks_SetMpiRecvCallback(event_callbacks, &MPI_Recv_print);
OTF2_GlobalEvtReaderCallbacks_SetMpiIrecvCallback(event_callbacks, &MPI_Irecv_print);
//OTF2_GlobalEvtReaderCallbacks_SetMpiCollectiveBeginCallback(event_callbacks, &MPI_CollectiveBegin_print);
OTF2_GlobalEvtReaderCallbacks_SetMpiCollectiveEndCallback(event_callbacks, &MPI_CollectiveEnd_print);
// registering callbacks and deleting callbacks handle
OTF2_Reader_RegisterGlobalEvtCallbacks(reader, global_evt_reader, event_callbacks, NULL);
OTF2_GlobalEvtReaderCallbacks_Delete(event_callbacks);
// reading all global events
uint64_t events_read = 0;
OTF2_Reader_ReadAllGlobalEvents(reader, global_evt_reader, &events_read);
//printf("Events_read = %"PRIu64"\n", events_read);
OTF2_Reader_Close( reader );
cout << "Events started at " << startTime << endl;
cout << "Events ended at " << endTime << endl;
long long int num1 = numProcesses;
DBConnection.insert("Otf2Data.TraceIds", BSON( "TraceId" << TraceId << "Status" << "done" << "NumberOfLocations" << num1));
cout << "getlasterror returns: \"" << DBConnection.getLastError() << '"' << endl;
cout << "Inserting successfully done! " << endl;
}
delete [] BeginTimes;
delete [] IsPointEvent;
delete [] IsCommEvent;
delete [] RegionNames;
//delete [] SendTo;
//delete [] RecvFrom;
delete [] SendLength;
delete [] RecvLength;
delete [] Root;
//delete [] Point_SendTime;
//delete [] Point_SendComm;
//delete [] Point_SendTag;
//delete [] Point_SendLength;
}
catch(DBException& e) {
cout << "caught DBException " << e.toString() << endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
示例7: run
void run(string router, string ns, long long start, long long range, int sleepTime) {
DBClientConnection c;
c.connect(router);
c.setWriteConcern(W_NORMAL);
struct timeval start_time, stop_time, delay;
char timeStr[25];
bool flag;
BSONObj b;
srand(time(NULL));
long long user_id = -1;
long long number = -1;
int opSelector;
string s;
BSONObj insertObj;
BSONObj query;
BSONObj updateObj;
BSONObj readObj;
int numOps = 3;
int i = 0;
string operation = "none";
map<long long, int> insertedKeys;
while( true ) {
flag = false;
curTimeString(timeStr);
gettimeofday(&start_time, NULL);
opSelector = i % numOps;
i++;
try {
switch(opSelector) {
case 0: //insert
operation = "insert";
while(true) {
user_id = start + (rand() % range);
if( insertedKeys.find(user_id) == insertedKeys.end()) { //key not been inserted previously
insertedKeys.insert(make_pair(user_id, 1));
cout<<operation<<": Info: inserting " << user_id << endl;
break;
}
}
//insert command goes here
number = 2 * start + range - user_id;
insertObj = BSON("user_id" << user_id << "number" << number << "name" << "name");
//cout<<"insert: "<<insertObj.toString()<<endl;
c.insert(ns, insertObj);
s = c.getLastError(ns, false, false, 1, 0);
if (s.length() > 0)
{
flag = true;
cout << "Error:" << s << endl;
}
break;
case 1: //update
operation = "update";
//update command goes here
query = BSON("user_id" << user_id);
updateObj = BSON("user_id" << user_id << "number" << number << "name" << "nameUpdated");
//cout<<"update: "<<updateObj.toString()<<endl;
c.update(ns, Query(query), updateObj);
s = c.getLastError(ns, false, false, 1, 0);
if (s.length() > 0)
{
flag = true;
cout << "Error:" << s << endl;
}
break;
case 2:
//read
operation = "read";
readObj = BSON("user_id" << user_id);
//cout<<"read: "<<readObj.toString()<<endl;
b = c.findOne(ns, Query(readObj), 0, QueryOption_SlaveOk);
if (b.isEmpty() <= 0)
flag = true;
s = c.getLastError(ns, false, false, 1, 0);
if (s.length() > 0)
{
flag = true;
cout << "Error:" << s << endl;
}
break;
default:
cout<<"Unrecognized opSelector ! " << opSelector << endl;
cout<<"i : " << i << " numOps : " << numOps << endl;
break;
}
} catch (DBException e){
flag = true;
cout << "Error: " << e.toString() << endl;
}
if (!flag) {
gettimeofday(&stop_time, NULL);
if (opSelector == 2)
//.........这里部分代码省略.........
示例8: main
//.........这里部分代码省略.........
}
{
// ensure index
verify( conn.ensureIndex( ns , BSON( "name" << 1 ) ) );
verify( ! conn.ensureIndex( ns , BSON( "name" << 1 ) ) );
}
{
// 5 second TTL index
const char * ttlns = "test.ttltest1";
conn.dropCollection( ttlns );
{
mongo::BSONObjBuilder b;
b.appendTimeT("ttltime", time(0));
b.append("name", "foo");
conn.insert(ttlns, b.obj());
}
conn.ensureIndex(ttlns, BSON("ttltime" << 1), false, false, "", true, false, -1, 5);
verify(!conn.findOne(ttlns, BSONObjBuilder().append("name", "foo").obj()).isEmpty());
// Sleep 66 seconds, 60 seconds for the TTL loop, 5 seconds for the TTL and 1 to ensure
sleepsecs(66);
verify(conn.findOne(ttlns, BSONObjBuilder().append("name", "foo").obj()).isEmpty());
}
{
// hint related tests
// tokumx doesn't reorder documents just because you updated one, what even is that
verify( conn.findOne(ns, "{}")["name"].str() == "eliot" );
verify( conn.findOne(ns, "{ name : 'sara' }")["name"].str() == "sara" );
verify( conn.getLastError() == "" );
// nonexistent index test
bool asserted = false;
try {
conn.findOne(ns, Query("{name:\"eliot\"}").hint("{foo:1}"));
}
catch ( ... ) {
asserted = true;
}
verify( asserted );
//existing index
verify( conn.findOne(ns, Query("{name:'eliot'}").hint("{name:1}")).hasElement("name") );
// run validate
verify( conn.validate( ns ) );
}
{
// timestamp test
const char * tsns = "test.tstest1";
conn.dropCollection( tsns );
{
mongo::BSONObjBuilder b;
b.appendTimestamp( "ts" );
conn.insert( tsns , b.obj() );
}
mongo::BSONObj out = conn.findOne( tsns , mongo::BSONObj() );
Date_t oldTime = out["ts"].timestampTime();