php7 mongodb 使用(四)集合的创建删除改名操作

本文详细介绍了如何使用PHP7的原生驱动进行MongoDB的集合管理,包括查询集合、创建与删除集合、创建索引、统计集合数据量以及重命名集合。文中提到,通过正则表达式可以筛选特定前缀的集合,固定大小集合在满时会自动替换最老的文档,重命名集合时索引会自动跟随,而统计集合数据量可以通过不同方法实现,如直接查询或使用collStats命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hangbobo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值