本文整理汇总了C++中BSONObjBuilder::appendOID方法的典型用法代码示例。如果您正苦于以下问题:C++ BSONObjBuilder::appendOID方法的具体用法?C++ BSONObjBuilder::appendOID怎么用?C++ BSONObjBuilder::appendOID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BSONObjBuilder
的用法示例。
在下文中一共展示了BSONObjBuilder::appendOID方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: run
void run() {
DurTransaction txn;
create();
ASSERT_EQUALS( 2, nExtents() );
DiskLoc l[ 8 ];
for ( int i = 0; i < 8; ++i ) {
StatusWith<DiskLoc> status = collection()->insertDocument( &txn, bigObj(), true );
ASSERT( status.isOK() );
l[ i ] = status.getValue();
ASSERT( !l[ i ].isNull() );
//ASSERT_EQUALS( i < 2 ? i + 1 : 3 + i % 2, nRecords() );
//if ( i > 3 )
// ASSERT( l[ i ] == l[ i - 4 ] );
}
ASSERT( nRecords() == 8 );
// Too big
BSONObjBuilder bob;
bob.appendOID( "_id", NULL, true );
bob.append( "a", string( MinExtentSize + 500, 'a' ) ); // min extent size is now 4096
BSONObj bigger = bob.done();
StatusWith<DiskLoc> status = collection()->insertDocument( &txn, bigger, false );
ASSERT( !status.isOK() );
ASSERT_EQUALS( 0, nRecords() );
}
示例2: getMe
void getMe(BSONObj& me) {
const string myname = getHostName();
Client::Transaction transaction(0);
// local.me is an identifier for a server for getLastError w:2+
if (!Collection::findOne("local.me", BSONObj(), me) ||
!me.hasField("host") || me["host"].String() != myname) {
// cleaning out local.me requires write
// lock. This is a rare operation, so it should
// be ok
if (!Lock::isWriteLocked("local")) {
throw RetryWithWriteLock();
}
// clean out local.me
deleteObjects("local.me", BSONObj(), false, false);
// repopulate
BSONObjBuilder b;
b.appendOID( "_id" , 0 , true );
b.append( "host", myname );
me = b.obj();
updateObjects("local.me", me, BSONObj(), true, false);
}
transaction.commit(0);
}
示例3: initShardVersionCB
bool VersionManager::initShardVersionCB( DBClientBase * conn_in, BSONObj& result ){
WriteBackListener::init( *conn_in );
DBClientBase* conn = getVersionable( conn_in );
verify( conn ); // errors thrown above
BSONObjBuilder cmdBuilder;
cmdBuilder.append( "setShardVersion" , "" );
cmdBuilder.appendBool( "init", true );
cmdBuilder.append( "configdb" , configServer.modelServer() );
cmdBuilder.appendOID( "serverID" , &serverID );
cmdBuilder.appendBool( "authoritative" , true );
BSONObj cmd = cmdBuilder.obj();
LOG(1) << "initializing shard connection to " << conn->toString() << endl;
LOG(2) << "initial sharding settings : " << cmd << endl;
bool ok = conn->runCommand( "admin" , cmd , result );
// HACK for backwards compatibility with v1.8.x, v2.0.0 and v2.0.1
// Result is false, but will still initialize serverID and configdb
if( ! ok && ! result["errmsg"].eoo() && ( result["errmsg"].String() == "need to specify namespace"/* 2.0.1/2 */ ||
result["errmsg"].String() == "need to speciy namespace" /* 1.8 */ ))
{
ok = true;
}
LOG(3) << "initial sharding result : " << result << endl;
return ok;
}
示例4: bigObj
static BSONObj bigObj() {
BSONObjBuilder b;
b.appendOID("_id", 0, true);
string as( 187, 'a' );
b.append( "a", as );
return b.obj();
}
示例5: ensureMe
void SyncSourceFeedback::ensureMe(OperationContext* txn) {
string myname = getHostName();
{
Lock::DBLock dlk(txn->lockState(), "local", MODE_X);
WriteUnitOfWork wunit(txn);
Client::Context ctx(txn, "local");
// local.me is an identifier for a server for getLastError w:2+
if (!Helpers::getSingleton(txn, "local.me", _me) ||
!_me.hasField("host") ||
_me["host"].String() != myname) {
// clean out local.me
Helpers::emptyCollection(txn, "local.me");
// repopulate
BSONObjBuilder b;
b.appendOID("_id", 0, true);
b.append("host", myname);
_me = b.obj();
Helpers::putSingleton(txn, "local.me", _me);
}
wunit.commit();
// _me is used outside of a read lock, so we must copy it out of the mmap
_me = _me.getOwned();
}
}
示例6: _insert
void _insert( Request& r , DbMessage& d, ChunkManager* manager ){
while ( d.moreJSObjs() ){
BSONObj o = d.nextJsObj();
if ( ! manager->hasShardKey( o ) ){
bool bad = true;
if ( manager->getShardKey().partOfShardKey( "_id" ) ){
BSONObjBuilder b;
b.appendOID( "_id" , 0 , true );
b.appendElements( o );
o = b.obj();
bad = ! manager->hasShardKey( o );
}
if ( bad ){
log() << "tried to insert object without shard key: " << r.getns() << " " << o << endl;
throw UserException( 8011 , "tried to insert object without shard key" );
}
}
Chunk& c = manager->findChunk( o );
log(4) << " server:" << c.getShard() << " " << o << endl;
insert( c.getShard() , r.getns() , o );
c.splitIfShould( o.objsize() );
}
}
示例7: getoid
BSONObj StorageEngine::getoid(string oid) {
OID oidobj;
oidobj.init(oid);
BSONObjBuilder ob;
ob.appendOID("_id",&oidobj);
return ob.obj();
}
示例8: initShardVersion
bool initShardVersion( DBClientBase& conn_in, BSONObj& result ){
WriteBackListener::init( conn_in );
DBClientBase* conn = getVersionable( &conn_in );
assert( conn ); // errors thrown above
BSONObjBuilder cmdBuilder;
cmdBuilder.append( "setShardVersion" , "" );
cmdBuilder.appendBool( "init", true );
cmdBuilder.append( "configdb" , configServer.modelServer() );
cmdBuilder.appendOID( "serverID" , &serverID );
cmdBuilder.appendBool( "authoritative" , true );
BSONObj cmd = cmdBuilder.obj();
LOG(1) << "initializing shard connection to " << conn->toString() << endl;
LOG(2) << "initial sharding settings : " << cmd << endl;
bool ok = conn->runCommand( "admin" , cmd , result );
LOG(3) << "initial sharding result : " << result << endl;
return ok;
}
示例9: initShardVersionCB
bool VersionManager::initShardVersionCB( DBClientBase * conn_in, BSONObj& result ){
WriteBackListener::init( *conn_in );
bool ok;
DBClientBase* conn = NULL;
try {
// May throw if replica set primary is down
conn = getVersionable( conn_in );
dassert( conn ); // errors thrown above
BSONObjBuilder cmdBuilder;
cmdBuilder.append( "setShardVersion" , "" );
cmdBuilder.appendBool( "init", true );
cmdBuilder.append( "configdb" , configServer.modelServer() );
cmdBuilder.appendOID( "serverID" , &serverID );
cmdBuilder.appendBool( "authoritative" , true );
BSONObj cmd = cmdBuilder.obj();
LOG(1) << "initializing shard connection to " << conn->toString() << endl;
LOG(2) << "initial sharding settings : " << cmd << endl;
ok = conn->runCommand("admin", cmd, result, 0);
}
catch( const DBException& ex ) {
bool ignoreFailure = ShardConnection::ignoreInitialVersionFailure
&& conn_in->type() == ConnectionString::SET;
if ( !ignoreFailure )
throw;
// Using initShardVersion is not strictly required when talking to replica sets - it is
// preferred to do so because it registers mongos early with the mongod. This info is
// also sent by checkShardVersion before a connection is used for a write or read.
OCCASIONALLY {
warning() << "failed to initialize new replica set connection version, "
<< "will initialize on first use" << endl;
}
return true;
}
// HACK for backwards compatibility with v1.8.x, v2.0.0 and v2.0.1
// Result is false, but will still initialize serverID and configdb
if( ! ok && ! result["errmsg"].eoo() && ( result["errmsg"].String() == "need to specify namespace"/* 2.0.1/2 */ ||
result["errmsg"].String() == "need to speciy namespace" /* 1.8 */ ))
{
ok = true;
}
LOG(3) << "initial sharding result : " << result << endl;
return ok;
}
示例10: toBSON
BSONObj BatchedCommandResponse::toBSON() const {
BSONObjBuilder builder;
if (_isOkSet)
builder.append(ok(), _ok);
if (_isErrCodeSet)
builder.append(errCode(), _errCode);
if (_isErrMessageSet)
builder.append(errMessage(), _errMessage);
if (_isNModifiedSet)
builder.appendNumber(nModified(), _nModified);
if (_isNSet)
builder.appendNumber(n(), _n);
if (_upsertDetails.get()) {
BSONArrayBuilder upsertedBuilder(builder.subarrayStart(upsertDetails()));
for (std::vector<BatchedUpsertDetail*>::const_iterator it = _upsertDetails->begin();
it != _upsertDetails->end();
++it) {
BSONObj upsertedDetailsDocument = (*it)->toBSON();
upsertedBuilder.append(upsertedDetailsDocument);
}
upsertedBuilder.done();
}
if (_isLastOpSet) {
if (_lastOp.getTerm() != repl::OpTime::kUninitializedTerm) {
_lastOp.append(&builder, "opTime");
} else {
builder.append("opTime", _lastOp.getTimestamp());
}
}
if (_isElectionIdSet)
builder.appendOID(electionId(), const_cast<OID*>(&_electionId));
if (_writeErrorDetails.get()) {
BSONArrayBuilder errDetailsBuilder(builder.subarrayStart(writeErrors()));
for (std::vector<WriteErrorDetail*>::const_iterator it = _writeErrorDetails->begin();
it != _writeErrorDetails->end();
++it) {
BSONObj errDetailsDocument = (*it)->toBSON();
errDetailsBuilder.append(errDetailsDocument);
}
errDetailsBuilder.done();
}
if (_wcErrDetails.get()) {
builder.append(writeConcernError(), _wcErrDetails->toBSON());
}
return builder.obj();
}
示例11: run
void run(){
int secsToSleep = 0;
while ( 1 ){
try {
ScopedDbConnection conn( _addr );
BSONObj result;
{
BSONObjBuilder cmd;
cmd.appendOID( "writebacklisten" , &serverID );
if ( ! conn->runCommand( "admin" , cmd.obj() , result ) ){
log() << "writebacklisten command failed! " << result << endl;
conn.done();
continue;
}
}
log(1) << "writebacklisten result: " << result << endl;
BSONObj data = result.getObjectField( "data" );
if ( data.getBoolField( "writeBack" ) ){
string ns = data["ns"].valuestrsafe();
int len;
Message m( (void*)data["msg"].binData( len ) , false );
massert( 10427 , "invalid writeback message" , m.header()->valid() );
grid.getDBConfig( ns )->getChunkManager( ns , true );
Request r( m , 0 );
r.process();
}
else {
log() << "unknown writeBack result: " << result << endl;
}
conn.done();
secsToSleep = 0;
}
catch ( std::exception e ){
log() << "WriteBackListener exception : " << e.what() << endl;
}
catch ( ... ){
log() << "WriteBackListener uncaught exception!" << endl;
}
secsToSleep++;
sleepsecs(secsToSleep);
if ( secsToSleep > 10 )
secsToSleep = 0;
}
}
示例12: _insert
void _insert( Request& r , DbMessage& d, ChunkManagerPtr manager ) {
while ( d.moreJSObjs() ) {
BSONObj o = d.nextJsObj();
if ( ! manager->hasShardKey( o ) ) {
bool bad = true;
if ( manager->getShardKey().partOfShardKey( "_id" ) ) {
BSONObjBuilder b;
b.appendOID( "_id" , 0 , true );
b.appendElements( o );
o = b.obj();
bad = ! manager->hasShardKey( o );
}
if ( bad ) {
log() << "tried to insert object without shard key: " << r.getns() << " " << o << endl;
throw UserException( 8011 , "tried to insert object without shard key" );
}
}
// Many operations benefit from having the shard key early in the object
o = manager->getShardKey().moveToFront(o);
const int maxTries = 10;
bool gotThrough = false;
for ( int i=0; i<maxTries; i++ ) {
try {
ChunkPtr c = manager->findChunk( o );
log(4) << " server:" << c->getShard().toString() << " " << o << endl;
insert( c->getShard() , r.getns() , o );
r.gotInsert();
if ( r.getClientInfo()->autoSplitOk() )
c->splitIfShould( o.objsize() );
gotThrough = true;
break;
}
catch ( StaleConfigException& e ) {
log( i < ( maxTries / 2 ) ) << "retrying insert because of StaleConfigException: " << e << " object: " << o << endl;
r.reset();
manager = r.getChunkManager();
uassert(14804, "collection no longer sharded", manager);
}
sleepmillis( i * 200 );
}
assert( inShutdown() || gotThrough );
}
}
示例13: insert
void insert( const BSONObj &o ) {
if ( o["_id"].eoo() ) {
BSONObjBuilder b;
OID oid;
oid.init();
b.appendOID( "_id", &oid );
b.appendElements( o );
_collection->insertDocument( &_txn, b.obj(), false );
}
else {
_collection->insertDocument( &_txn, o, false );
}
}
示例14: insert
void insert(const char* s) {
WriteUnitOfWork wunit(&_txn);
const BSONObj o = fromjson(s);
if (o["_id"].eoo()) {
BSONObjBuilder b;
OID oid;
oid.init();
b.appendOID("_id", &oid);
b.appendElements(o);
_collection->insertDocument(&_txn, b.obj(), false);
} else {
_collection->insertDocument(&_txn, o, false);
}
wunit.commit();
}
示例15: _insert
void _insert( Request& r , DbMessage& d, ChunkManagerPtr manager ){
while ( d.moreJSObjs() ){
BSONObj o = d.nextJsObj();
if ( ! manager->hasShardKey( o ) ){
bool bad = true;
if ( manager->getShardKey().partOfShardKey( "_id" ) ){
BSONObjBuilder b;
b.appendOID( "_id" , 0 , true );
b.appendElements( o );
o = b.obj();
bad = ! manager->hasShardKey( o );
}
if ( bad ){
log() << "tried to insert object without shard key: " << r.getns() << " " << o << endl;
throw UserException( 8011 , "tried to insert object without shard key" );
}
}
bool gotThrough = false;
for ( int i=0; i<10; i++ ){
try {
ChunkPtr c = manager->findChunk( o );
log(4) << " server:" << c->getShard().toString() << " " << o << endl;
insert( c->getShard() , r.getns() , o );
r.gotInsert();
c->splitIfShould( o.objsize() );
gotThrough = true;
break;
}
catch ( StaleConfigException& ){
log(1) << "retrying insert because of StaleConfigException: " << o << endl;
r.reset();
manager = r.getChunkManager();
}
sleepmillis( i * 200 );
}
assert( gotThrough );
}
}