Yii 操作 MongoDB数据库


1. 安装php_mongo
     把php_mongo.dll放到php/ext下面,然后打开php.ini(注意:是apache的php.ini),写入extension=php_mongo.dll,重启wamp。

2. 安装MongoDB。
3. 使用MongoYii extension
   (1)看帮助文档设置main.php
   (2)创建Model。
            定义变量。
            重写model()和collectionName()。
            定义rules(),参考http://huangjiyun.diandian.com/post/2011-10-10/5686398。另外MongoYii还有几个自定义的validate,
            用法:array('name', 'EMongoExistValidator', 'className'=>'User', 'attributeName'=>'name'),
            定义relations()。
   (3) 对Mongo的CRUD操作.

Create:
save(), insert()
Read:
findOne(), find(), findAll()调用find(), findAllByPk(), findBy_id(), findByPk()
Update:
update(), updateByPk(), updateAll($criteria = array(), $updateDoc = array()).

关于updateAll()的一些操作:

'$inc': 如果记录的该节点存在,让该节点的数值加N;如果该节点不存在,让该节点值等于N. saveCounters()是该操作的实现。
'$set': 让某节点等于给定值。
'$unset': 删除某节点
'$push': 如果对应节点是个数组,就附加一个新的值上去;不存在,就创建这个数组,并附加一个值在这个数组上;如果该节点不是数组,返回错误。
'$pushAll': 与$push类似,只是会一次附加多个数值到某节点。
'$addToSet': 如果该阶段的数组中没有某值,就添加之。
'$pop': 删除某数组节点的最后一个元素。
'$pull': 如果该节点是个数组,那么删除其值为value的子项,如果不是数组,会返回一个错误。
'$pullAll': 与$pull类似,只是可以删除一组符合条件的记录。

Delete:

deleteByPk(), deleteAll()

其他的一些方法:

saveCounters(), count().

(4) EMongoCriteria

condition sort addCondition($column, $value), addOrCondition(array $condition), compare()
$c->compare('name', 'sammaye');
$c->compare('i', '<4');

(5) 查询结果

对于查询结果是多条的,它的返回值是一个Cursor, 可以使用getNext()一次次的去查找下一个 或者直接将它变成数组.

原文地址:https://www.cnblogs.com/lindsayzhao103011/p/3503068.html