BatchedCommandRequest* msgToBatchDelete( const Message& deleteMsg ) { // Parsing DbMessage throws DbMessage dbMsg( deleteMsg ); NamespaceString nss( dbMsg.getns() ); int flags = dbMsg.pullInt(); const BSONObj query = dbMsg.nextJsObj(); int limit = ( flags & RemoveOption_JustOne ) ? 1 : 0; // No exceptions from here on BatchedDeleteDocument* deleteDoc = new BatchedDeleteDocument; deleteDoc->setLimit( limit ); deleteDoc->setQuery( query ); BatchedCommandRequest* request = new BatchedCommandRequest( BatchedCommandRequest::BatchType_Delete ); request->setNS( nss.ns() ); request->getDeleteRequest()->addToDeletes( deleteDoc ); return request; }