Ninvfeng Blog

记录web开发中的所见所得

mongodb介绍与封装php7操作类库

mongodb是一个非关系型的文档数据库, 有这么几个特点

  1. 数据的存储格式为BSON,一种类似json的二级制格式, 这意味着MongoDB更加灵活,因为可以在文档中直接插入数组之类的复杂数据类型,并且文档的key和value不是固定的数据类型和大小,所以开发者在使用MongoDB时无须预定义关系型数据库中的”表”等数据库对象,设计数据库将变得非常方便,可以大大地提升开发进度。
  2. 性能高。MongoDB使用的是内存映射存储引擎,在内存充足的情况下它会把数据文件映射到内存中,内存不足的情况下会把索引和热数据,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能。
  3. 弱事务,不使用自增ID。这使得它不适用于某些场景,但能进一步提高性能。

centos7安装monogdb

vim /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB 3.4 Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=1
yum install -y mongodb-org

安装php mongodb扩展

pecl install mongodb
echo "extension=mongodb.so" >> /etc/php.ini

使用PHP操作mongodb

原生mongodb类用起来非常的繁琐 参考网友吐槽:https://my.oschina.net/jsk/blog/644287
mongodb提供的官方类: https://github.com/mongodb/mongo-php-library 相对好用些, 包含了php5的代码, 体积有点大且用起来也不是很顺手, 于是就自己搞了一个

自己封装的mongodb操作类 https://github.com/ninvfeng/mongodb,参考了ThinkPHP的数据库操作用法,用起来更加直观方便

mongodb('user')->insert(['user'=>'ninvfeng','pass'=>'password']);
mongodb('user')->insert(['user'=>'lvlv','pass'=>'password']);

mongodb('user')->where(['user'=>'ninvfeng'])->delete();

mongodb('user')->where(['user'=>'lvlv'])->update(['pass'=>'password2']);

查找一条

mongodb('user')->where(['user'=>'lvlv'])->find();

查找&&分页

mongodb('user')->page(1)->select();

查找并删除 原子操作

mongodb('user')->where(['user'=>'lvlv'])->findAndRemove();

统计

mongodb('user')->count();

调用函数

mongodb('user')->func();

返回原生对象

mongodb('user')->mongodb();

文章评论已关闭!