每个集合(文档、数据表)都会有一个key, "_id"对应;
system.indexes集合是系统表索引
system.user集合是系统用户
最常用原子操作
$set:array( $set => array( field => value))
$unset:array($unset => (field => 1))
$inc :array($inc => (field=> value))
$gt :array($gt => (field=> value))
$gt: array('_id' => array('$gt' => 486, '$lt' => 488));
$sort: array('_id' => 1,’cid’=> -1);
$in: array('_id' => array('$in' => array(83,487)));
查询条件:<, <=, >, >==、$all、$exists、$mod、$ne、$in、$nin
$nor、$or、$size、$type
列表常用方法:
count()、limit()、skip()、snapshot()、sort()、group()
功能:选择操作库
$this->_db = self::$in[$r]->selectDB( $this->_cfg['name']);
功能:插入数据
$this->_db->selectCollection($tableName)->insert($array,array('safe'=>true));
功能:删除数据
$this->_db->selectCollection($tableName)->remove($array,array('safe' => false) );
功能:更新数据
$this->_db->selectCollection($tableName)->update( $where,$array, $multiple);
功能:获取单条数据
return $this->_db ->selectCollection($tableName)->findOne( $where );
功能:获取多条数据及列表分页
方法名: find()
$cursor = $this->_db ->selectCollection($tableName)->find($where )->sort( $sort )->skip( $skip )->limit($limit );
//$cursor->snapshot(); 开启结果集不变化
while( $cursor->hasNext() ) {
$ret[] = $cursor->getNext();
}
分组查询:
$command = array(
'mapreduce' => $tableName, //集合
'map' => $array['map'],//地图
'reduce' => $array['reduce'], //javascript
'query' => $array['query'], //条件
'sort' => $array['sort'], //array('_id' => 1), //排序
'limit' => $array['limit'],//int 5 处理数据量
'out' => $array['tableNameOut'], //处理结果输出集合
);
$ret = $this->_db->command($command);
* 返回结果结构如下:
* result:储存结果的collection的名字
* input:满足条件的数据行数
* reduce:满足reduce执行条数
* emit:emit调用次数,也就是所有集合中的数据总量
* ouput:返回结果条数
* timeMillis:执行时间,毫秒为单位
* ok:是否成功,成功为1
* err:如果失败,这里可以有失败原因,不过从经验上来看,原因比较模糊,作用不大
功能:统计计数
$this->_db->selectCollection($tableName)->find( $where)->count();
功能:添加索引(参数: array(cid => 1, ‘unique’=> true))
$this->_db->selectCollection($tableName)->ensureIndex( $array );
功能: 删除集合
$this->_db->selectCollection($tableName)->drop();