MongoDB和CodeIgniter

任何人都可以帮助我指向一个教程,库等,这将允许我从CodeIgniter与MongoDB的工作?

我不确定它的“CodeIgniter方式”,但我创build了一个CodeIgniter库,它扩展了Mongo类,并有一个额外的属性来存储当前的数据库连接。

这里是我的项目相关的代码文件。

configuration/ mongo.php

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

库/ 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; } } 

还有一个样本控制器

控制器/ 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); } } 

MongoDB在CodeIgniter社区中得到很好的支持,请花点时间深入:p

  • CodeIgniter MongoDB活动文档库
  • CodeIgniter的MongoDB会话库
  • CodeIgniter MongoDB身份validation库
  • CodeIgniter的MongoDB REST服务器库
  • CodeIgniter的MongoDB基本模型

我喜欢Stephen Curran的例子,因为它很简单,并且允许Mongo的接口没有太多的function写在Php中,我倾向于发现大量的抽象。

我已经扩展了他的例子,包括数据库authentication。 去这里: http : //www.mongodb.org/display/DOCS/Security+and+Authentication阅读有关mongoauthentication,不要忘记启用您连接到的Mongo Server的身份validation。

我也改变了旧式构造函数为__construct,并且正在处理Mongo Connection Exceptions,因为它们可以显示你的用户名和密码。

configuration/ 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 */ 

库/ 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:$password@$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')); } } } 

在CodeIgniter中使用MongoDB与在其他地方使用MongoDB没有多大区别。

你可以把构造函数中连接的MongoDB库敲在一起,并存储$ this-> conn以便在稍后的方法中使用。

然后直接使用控制器中的conn属性,或者在MongoDB库中创build一些方法来为您执行此操作。

看看这里看到纯PHP的教程与MongoDB的工作。

我会很高兴地为你创build一个图书馆,但它会带来一个价格。 😛

我正在使用MongoDB w / CI,并提出以下。 它适用于我,但我相信它可以稍微调整。 我会担心后来调整,但现在它做我想要的。

我创build了一个名为“database_conn.php”的模型

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

然后,如果我需要连接到我的模型集合。

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