No estoy seguro de si es la "forma CodeIgniter", pero creé una biblioteca CodeIgniter que amplía la clase Mongo con una propiedad adicional para almacenar la conexión de base de datos actual.
Aquí están los archivos de código relevantes de mi proyecto.
config/mongo.php
$config['mongo_server'] = null;
$config['mongo_dbname'] = 'mydb';
bibliotecas/Mongo.php
class CI_Mongo extends Mongo
{
var $db;
function CI_Mongo()
{
// Fetch CodeIgniter instance
$ci = get_instance();
// Load Mongo configuration file
$ci->load->config('mongo');
// Fetch Mongo server and database configuration
$server = $ci->config->item('mongo_server');
$dbname = $ci->config->item('mongo_dbname');
// Initialise Mongo
if ($server)
{
parent::__construct($server);
}
else
{
parent::__construct();
}
$this->db = $this->$dbname;
}
}
Y un controlador de muestra
controladores/posts.php
class Posts extends Controller
{
function Posts()
{
parent::Controller();
}
function index()
{
$posts = $this->mongo->db->posts->find();
foreach ($posts as $id => $post)
{
var_dump($id);
var_dump($post);
}
}
function create()
{
$post = array('title' => 'Test post');
$this->mongo->db->posts->insert($post);
var_dump($post);
}
}