MongoDB是一个可扩展、高性能的下一代数据库。MongoDB中的数据以文档形式存储,这样就能在单个数据对象中表示复杂的关系。文档可能由 以下几 部分组成:独立的基本类型属性、“内嵌文档”或文档数组。
这样的灵活性让开发者能以一种易于管理且灵活的方式来对大量的问题进行建模,不必将数据打散到不同的数据表中。在数据不宜被构造成单独文档的情况 下,MongoDB有“DBRef”的概念,这是从文档的一个属性指向另一个文档的指针。
从MongoDB数据库中获取和查询数据是十分灵活的——可以基于主文档、文档中的任意属性、任意内嵌文档、数组中的任意文档来动态地查询文档。可 以通过 “点”符号来访问内嵌文档。
由于Ubuntu 10.04 已经带了MongoDB 1.2.2的源,因此可以直接使用apt-get安装:
sudo apt-get install mongodb
在安装MongoDB的时候,系统会安装MongoDB的很多依赖包,安装完成之后,运行MongoDB,会提示:
mongod: error while loading shared libraries: libmozjs.so: cannot open shared object file: No such file or directory
解决方法是:
sudo apt-get install xulrunner-dev
找到libmozjs.so文件:
find /usr/lib | grep libmozjs
可以看到:
/usr/lib/xulrunner-devel-1.9.2.8/sdk/lib/libmozjs.so
/usr/lib/xulrunner-1.9.2.8/libmozjs.so
/usr/lib/firefox-3.6.8/libmozjs.so
给库做个链接:
sudo ln -s /usr/lib/xulrunner-1.9.2.8/libmozjs.so /usr/lib
重启mongodb的服务:
sudo service mongodb start
可以确认一下服务是否启动:
ps aux | grep mongod
pymongo安装
由于pymongo采用的是easy_install的模式进行安装的,所以需要先安装setuptools:
sudo apt-get install python-setuptools
安装好之后,可以执行安装:
sudo easy_install pymongo
注意事项:
只要 sudo apt-get install mongodb 应该就会装好。
但是安装得朋友一定都会发现,装起来无法启动无法使用。
在查找了一些资料后发现:
这主要的问题在于少了 /usr/lib/libmozjs.so 这个软件库的文件。
只要你有装 Firefox 或是 另外安装 xulrunner 就应该会有,不过路径是错得。
所以就要这样:sudo apt-get install xulrunner-1.9.2
安装好了以后,建立连结。
ln -s /usr/lib/xulrunner-1.9.2.6/libmozjs.so /usr/lib/libmozjs.so
然后重新启动 mongodb 试试看,应该就会看到 mongodb 正确启动。
安装php连接mongo的驱动
可以到这个链接下载驱动http://github.com/mongodb/mongo-php-driver/downloads
注意php的版本匹配问题,否则启动apache报错。
mongoDB 服务端的默认连接端口是 27017
<?php
//多个服务器
$conn = new Mongo(“mongodb://localhost:27017”);
//选择数据库blog
$db = $conn->blog;
//制定结果集(表名:users)
$collection = $db->users;
//列出数据库列表
$dbs = $conn->listDBs();
echo “<pre>”;
print_r($dbs);
echo “</pre>”;
//新增
$user = array(‘name’ => ‘caleng’, ’email’ => ‘admin@admin.com’);
$collection->insert($user);
//修改
$newdata = array(‘$set’ => array(“email” => “test@test.com”));
$collection->update(array(“name” => “caleng”), $newdata);
//查找
$cursor = $collection->find();
echo “<pre>”;
print_r($cursor);
echo “</pre>”;
//查找一条
$user = $collection->findOne(array(‘name’ => ‘caleng’), array(’email’));
echo “<pre>”;
print_r($user);
echo “</pre>”;
//删除
$collection->remove(array(‘name’=>’caleng’), array(“justOne” => true));
?>