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()一次次的去查找下一個 或者直接將它變成數組.
