Puede alguien ayudar en señalándome a un tutorial, biblioteca, etc. que me va a permitir trabajar con MongoDB desde CodeIgniter?

  • compruebe esto hacia fuera github.com/vesparny/cimongo-codeigniter-mongodb-library
  • Tengo una duda. Mongodb sintaxis de la consulta es ya simple. No hay necesidad de escribir complejo de SQL. ¿Por qué no deshabilitar «ActiveRecord» de la clase en el archivo config y escribir sus consultas por defecto utilizando el mongo conductor?
InformationsquelleAutor IEnumerator | 2010-02-12

5 Comentarios

  1. 51

    No estoy seguro de si se trata de la «CodeIgniter manera», pero he creado un CodeIgniter biblioteca que se extiende el Mongo de la clase con una propiedad adicional para almacenar la base de datos actual de la conexión.

    Aquí está el código correspondiente archivos de mi proyecto.

    config/mongo.php

    $config['mongo_server'] = null;
    $config['mongo_dbname'] = 'mydb';

    libraries/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 muestra

    controllers/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);
        }
    }
    • muchas gracias. Muy buen comienzo.
    • Stephen ¿Qué acerca de los modelos? Hay alguna consideración especial que se tiene que dar no?
    • Yo era capaz de obtener los modelos de la funcionalidad de trabajo también. Nada especial, heredan de Modelo y sus funciones sólo tienes que llamar Mongo funciones específicas. Fácil
    • Exactamente. Usted debe ser capaz de ir $this->mongo->db directamente en el modelo de código.
    • Esta es una gran cosa ¿hay algún plan para liberar a más de la documentación o para ampliar sobre cómo buscar y recuperar documentos?
    • El Mongo DB driver de PHP. Así que tendría que utilizar la biblioteca como lo haría normalmente fuera de CodeIgniter. Has visto el Mongo DB driver de PHP doc? php.net/manual/en/book.mongo.php
    • tenga en cuenta que el mongo objeto ya tiene un connection propiedad de forma nativa.
    • Gracias por este Stephen, yo era sólo curiosidad, ¿sabes lo que parent::__construct($server); hace ?
    • Se invoca al constructor padre, en este caso el constructor de la Mongo clase (php.net/manual/en/class.mongo.php), pasando el nombre de host/dirección ip de donde el Mongo DB server se está ejecutando.
    • $ci =& get_instance() se debe utilizar en su lugar. De CI docs: Esto es muy importante. La asignación por referencia permite utilizar el original CodeIgniter objeto en lugar de crear una copia de él.
    • Tengo una duda. Mongodb sintaxis de la consulta es ya simple. No hay necesidad de escribir complejo de SQL. ¿Por qué no deshabilitar «ActiveRecord» de la clase en el archivo config y escribir sus consultas por defecto utilizando el mongo conductor?
    • Hola, mi configuración ya estaban hechas para mysql, y ahora estoy tratando de cambiar de mongodb. También tengo libraries\Mysmarty.php y en config\base de datos de un conjunto de $db[‘default’][‘database’] = ‘solicitud’; $db[‘default’][‘dbdriver’] = ‘mysql’;………¿Qué debo hacer con estos? Si un solo eliminar «mysql» y substituya con «mongo» no funciona

  2. 10

    Me gusta Stephen Curran el ejemplo es simple y permite una interfaz de Mongo sin demasiada funcionalidad escrito en Php, que tienden a encontrar gran abstracción de clases un poco mucho, a veces para lo que yo busco.

    Me han extendido su ejemplo para incluir autenticación de base de datos. Vaya aquí: http://www.mongodb.org/display/DOCS/Security+y+Autenticación para leer acerca de mongo de autenticación, no olvide habilitar la autenticación para el Mongo de Servidor que se está conectando.

    También he cambiado el estilo antiguo constructor de la función __construct y estoy manejando Mongo Conexión Excepciones como pueden revelar su nombre de usuario y contraseña.

    config/mongo.php

    <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    $config['mongo_server'] = 'localhost';
    $config['mongo_dbname'] = 'my_mongo_db';
    $config['mongo_username'] = 'mongo_user';
    $config['mongo_password'] = 'password1234';
    
    /* End of file mongo.php */

    libraries/Mongo.php

    <?php
    
    class CI_Mongo extends Mongo{
    
        protected $db;
    
        function __construct()
        {   
            //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');
            $username = $ci->config->item('mongo_username');
            $password = $ci->config->item('mongo_password');
            $dbname = $ci->config->item('mongo_dbname');
    
            //Initialise Mongo - Authentication required
            try{
                parent::__construct("mongodb://$username:[email protected]$server/$dbname");
                $this->db = $this->$dbname;
            }catch(MongoConnectionException $e){
                //Don't show Mongo Exceptions as they can contain authentication info
                $_error =& load_class('Exceptions', 'core');
                exit($_error->show_error('MongoDB Connection Error', 'A MongoDB error occured while trying to connect to the database!', 'error_db'));           
            }catch(Exception $e){
                $_error =& load_class('Exceptions', 'core');
                exit($_error->show_error('MongoDB Error',$e->getMessage(), 'error_db'));           
            }
        }
    }
    • un poco si (), sería de ayuda si no hay auth cred. dado 😉
    • Posiblemente, sin embargo, si un usuario desea ejecutar en contra de un mongo servidor sin que el –auth bandera, a continuación, se podría utilizar el post original de Stephen Curran. O adaptar la mía como sea necesario. Lucas
  3. 6

    Trabajar con MongoDB en CodeIgniter no sería muy diferente de trabajar con él en cualquier otro lugar.

    Usted podría golpear juntos un MongoDB biblioteca que permite la conexión en el constructor y almacén $this->conn para ser utilizado en los métodos más tarde.

    a continuación, trabajar directamente con la conexión de la propiedad en sus controladores o crear un par de métodos en su MongoDB biblioteca para hacer esto para usted.

    Echar un vistazo aquí para ver el PHP tutorial para trabajar con MongoDB.

    Me gustaría felizmente crear una biblioteca para esto, pero viene con un precio. :-p

    • gracias – me doy cuenta de que con el Driver de MongoDB y el anterior tutorial PHP puedo hacer que todo suceda.
    • Si usted crear una buena biblioteca por favor, compartirlo con la comunidad. Id amor una excusa para jugar con MongoDB. 🙂
    • El esturión – se parece a @stephenc me pegaba a él.
    • Dulce, ojalá yo tuviera el tiempo para hacer uno yo mismo. 🙂 Se ve bien.
    • Lo siento se me espesa? ¿Dónde está la biblioteca de @stephenc?
    • Es el aceptado respuesta.
    • se cuelga de la cabeza en la vergüenza
    • acaba de compartir una biblioteca en la respuesta a continuación: stackoverflow.com/questions/2248789/mongodb-and-codeigniter/…

  4. 2

    Estoy usando MongoDB w/CI y se llegó a la siguiente. A mí me funciona, pero estoy seguro de que puede ser modificado algo. Voy a preocuparse de ajustar más tarde, pero ahora se hace lo que yo quiero.

    He creado un modelo llamado «database_conn.php»

    class Database_Conn extends Model {
    
        function _connect() {
            $m = new Mongo();
    
            $db = $m->selectDB( "YOUR DATABASE NAME" );
            return $db;
        }
    }

    Luego, si tengo que conectar a una colección de mis modelos.

    $collection = Database_Conn::_connect()->selectCollection( "COLLECTION NAME" );

Dejar respuesta

Please enter your comment!
Please enter your name here