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()一次次的去查找下一个 或者直接将它变成数组.