本文整理汇总了C++中NamespaceDetails::findIndexByName方法的典型用法代码示例。如果您正苦于以下问题:C++ NamespaceDetails::findIndexByName方法的具体用法?C++ NamespaceDetails::findIndexByName怎么用?C++ NamespaceDetails::findIndexByName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NamespaceDetails
的用法示例。
在下文中一共展示了NamespaceDetails::findIndexByName方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: run
void run() {
NamespaceDetails* nsd = nsdetails( _ns );
// _id_ is at 0, so nIndexes == 1
IndexCatalog::IndexBuildBlock* a = halfAddIndex("a");
IndexCatalog::IndexBuildBlock* b = halfAddIndex("b");
IndexCatalog::IndexBuildBlock* c = halfAddIndex("c");
IndexCatalog::IndexBuildBlock* d = halfAddIndex("d");
int offset = nsd->findIndexByName( "b_1", true );
ASSERT_EQUALS(2, offset);
delete b;
ASSERT_EQUALS(2, nsd->findIndexByName( "c_1", true ) );
ASSERT_EQUALS(3, nsd->findIndexByName( "d_1", true ) );
offset = nsd->findIndexByName( "d_1", true );
delete d;
ASSERT_EQUALS(2, nsd->findIndexByName( "c_1", true ) );
ASSERT( nsd->findIndexByName( "d_1", true ) < 0 );
offset = nsd->findIndexByName( "a_1", true );
delete a;
ASSERT_EQUALS(1, nsd->findIndexByName( "c_1", true ));
delete c;
}
示例2: renameCollection
Status Database::renameCollection( const StringData& fromNS, const StringData& toNS,
bool stayTemp ) {
// move data namespace
Status s = _renameSingleNamespace( fromNS, toNS, stayTemp );
if ( !s.isOK() )
return s;
NamespaceDetails* details = _namespaceIndex.details( toNS );
verify( details );
// move index namespaces
string indexName = _name + ".system.indexes";
BSONObj oldIndexSpec;
while( Helpers::findOne( indexName, BSON( "ns" << fromNS ), oldIndexSpec ) ) {
oldIndexSpec = oldIndexSpec.getOwned();
BSONObj newIndexSpec;
{
BSONObjBuilder b;
BSONObjIterator i( oldIndexSpec );
while( i.more() ) {
BSONElement e = i.next();
if ( strcmp( e.fieldName(), "ns" ) != 0 )
b.append( e );
else
b << "ns" << toNS;
}
newIndexSpec = b.obj();
}
DiskLoc newIndexSpecLoc = theDataFileMgr.insert( indexName.c_str(),
newIndexSpec.objdata(),
newIndexSpec.objsize(),
false,
true,
false );
int indexI = details->findIndexByName( oldIndexSpec.getStringField( "name" ) );
IndexDetails &indexDetails = details->idx(indexI);
string oldIndexNs = indexDetails.indexNamespace();
indexDetails.info = newIndexSpecLoc;
string newIndexNs = indexDetails.indexNamespace();
Status s = _renameSingleNamespace( oldIndexNs, newIndexNs, false );
if ( !s.isOK() )
return s;
deleteObjects( indexName.c_str(), oldIndexSpec, true, false, true );
}
Top::global.collectionDropped( fromNS.toString() );
return Status::OK();
}