使用的mongodb操作类 请参考以前的文章
php7 mongodb 使用(二)原生驱动 增删改查和统计
首先 查询集合
$m_model= new MongoClass();
$cmd=['listCollections' => 1,'nameOnly'=>true];
$res=$m_model->query('',$cmd,[],'command');
返回当前库下的所有集合。
如果是只想获得test前缀的集合
$cmd=['listCollections' => 1,'filter'=>['name'=>['$regex'=>'^test']],'nameOnly'=>true];
$regex 对应的就是正则表达式
创建一个集合
$cmd=['create' => 'test_001'];
$res=$m_model->query('',$cmd,[],'command');
如果要创建一个固定的集合
$cmd=['create' => 'test_002','capped'=>true,'size'=>10 * 1024,'max'=>10];
固定大小(封顶)集合是一种磁盘容量或者文档数量固定的特殊集合。当集合“满了”的时候,最老的文档就会被新的文档代替。比如你需要保留一定数量的日志,不用担心它们占用过多的空间。
给集合创建索引
$cmd=["createIndexes" => "test_002","indexes" => [["name" => "k1","key"=> ["k1" => 1],"ns" =>"db.test_002"]]];
$m_model->query('',$cmd,[],'command');
删除集合
$cmd=["drop" => "test_002"];
删除集合的时候索引也会同时删除
重命名集合
$cmd=["renameCollection" => 'db.test_001',"to" => "db.test_002",'dropTarget'=>true];
使用这个命令的前提是你的mongodb连接必须要先连接到admin数据库才能执行成功。
一般情况下你可能没有这个权限。
有些文档上说改名的时候索引对应的集合不会自动变,需要重新创建索引。
经过我实际测试索引是会自动跟随变动,这可能是php7的优化改进吧。
切换连接有可能会干扰其他连接对集合的读写,使用要慎重。
统计一个集合下的数据量
$cmd=["count" => $table,"query" =>$filter];
query里面允许条件搜索 类似mysql 的 count
另一种更快的方式是直接查看集合信息
$cmd=['collStats'=>'test_001'];
这中方式不会去遍历集合文档,肯定更快。