mongo中一个文档的字段是list,怎么删除list中的数据

mongo中一个文档的字段是list,怎么删除list中的数据,第1张

通过软件 *** 作。

通过cmd打开一个命令行窗口。通过mongo命令连接本地MongoDB数据库服务。注意:本地MongoDB服务需要工作在27017端口上,图示,连接成功即可。

查看需要处理的集合:showdb命令查看所有数据库。use目标数据库,切换到目标数据库中。showcollections查看当前数据库下所有集合信息。

方法/步骤

在mongodb的官方上search mongodump没有相应的资料,自己就在shell命令行里面 :

/data/mongodb-linux-x86_64-1.6.0/bin/mongodump --help 了一把, 自己来测试了,测试总结如下:

备份本机mongodb到/tmp/bakup目录下面:[root@localhost csf]# /data/mongodb-linux-x86_64-1.6.0/bin/mongodump -h 192.168.0.39:10001 -d csf -o /backup/mongodb

将/tmp/backup 下面的文件导入数据库:[root@localhost csf]#/data/mongodb-linux-x86_64-1.6.0/bin/mongorestore -h 192.168.0.39:10001 -d csf -drop --directoryperdb /backup/mongodb/csf/

【注释】--drop参数,有此参数,则表示,先删除所有的记录,然后恢复。如无此参数,则恢复备份时候的数据,备份之后新增加的数据依然存在;/backup/mongodb则是备份文件存放路径

原因是mongodb设计的本身机制问题造成的。

首先,mongodb在创建数据文件时,会根据64M,128M,256M...递增的方式产生数据文件,最大数据文件为2G,增大到2G之后,后面新增的数据文件都占用2G空间。

当删除某一个表的数据时,mongodb会标记你删除该表所在数据文件位置为:该部分的数据已经删除,但是不会释放该数据文件所占用的空间,当有新的数据进来之后,会将数据分配到该数据文件中。

一方面是:删除文件后不产生多余的数据碎片,

另一方面不做数据的大规模迁移,减少mongodb内部的IO *** 作。

所以在删除数据表之后,会发现系统空间并没有释放,从mongodb本身看,空间已经释放了,被删除数据的空间依然可用;

但从系统角度看,空间没有释放,并不会影响数据的存储。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6698555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存