1. CMS首页
  2. 技术杂文

MongoDB的PHP常规操作 提升查询速度方法

连接:$conn = new MongoClient();
选择数据库:$db=$conn->houbuluo//选择名为houbuluo的库,如果不存在自动创建
创建库:为了确保正确连接,你需要指定数据库名,如果数据库在mongoDB中不存在,mongoDB会自动创建
创建集合$db->createCollection("testcoll");
选择集合:$coll=$db->testcoll;
删除集合:$coll->drop();
插入 :
$document = array( 
    "id" => 1, 
    "content" => "houbuluo.com"
);
$coll->insert($document);


查询:
$cur=$coll->find();
foreach($cur as $row){
echo $row["content"];
}


更新:
$coll->update(array("content"=>"houbuluo.com"),array("$set"=>array("content"=>"猴部落")))
删除
$coll->remove(array("content"=>"猴部落"),array("justOne"=>true))


条件查询:
 $cur=$coll->find(array("id"=>1));
 limit:$coll->find()->limit(1)//只输出一条
 skip:$coll->find()->skip(1)//忽略(跳过)跳过集合中第一条数据,直接输出第二条
排序:$coll->find()->sort(array("id"=>1))参数:-1表示降序 1表示升序,表示按id字段升序排列
设置索引:$coll->creatIndex(array("id"=>1));将id设置为索引 且值从1开始
创建多个索引$coll->creatIndex(array("id"=>1,"content"=>1))
获取记录添加时间:
  $a= $document["_id"]->getTimestamp();
  echo date("Y-m-d H:i:s",$a);

 

MongoDB是一个基于分布式文件存储的数据库。用C 编写。它旨在为web应用程序提供可扩展的高性能数据存储解决方案。

Mongodb是关系数据库和非关系数据库之间的产物。它具有最丰富的功能和最相似的关系数据库。

  猴猴最近在研究适合中量级的数据库时,发现MongoDB非常适合大量数据的存储。同样测试千万条记录(每条记录14MB左右大小,都是文章数据),mysql缓慢甚至崩溃(因为程序是不间断的往数据库存储,sql直接连接失败);redis因为是存在内存中的,而测试的服务器内存只有4G,所以到百万数据的时候内存就99%了,redis报错,插入失败,中途还有几次redis直接停止运行

报错内容: message "MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk。)了解到redis是主要用于缓存服务的,小编开始尝试MongoDB,前期导入百万数据,(插入十万条记录需要22秒左右,而redis只需几秒),看到插入时间差距这么大,小编带着一丝淡淡的忧伤开始读取数据测试,什么?报错。。。大概报错内容是超过30秒没有读取到内容,网上有方法说修改下超时时间,但是这个并没有什么用,都30秒还没查询出来,修改超时时间也徒劳。于是开始看各种优化方法,偶得一方法:设置索引,抱着不相信的方法开始尝试设置(这个时候都有点想不用数据库,用fopen做本地txt或者json的文件存储了),当设置完索引查询数据一看执行时间,1秒钟都没到,开始怀疑是不是计时出了问题,换其他记录查询,网页也是秒打开,顿时看到了希望,MongoDB还是挺强大的!于是分享给大家一些PHP中的操作方法。

发表评论

用户名: