使用的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']; 这中方式不会去遍历集合文档,肯定更快。
?
|