Mongodb Update$unset命令会耗尽大型集合上的所有ram

Mongodb Update$unset命令会耗尽大型集合上的所有ram,mongodb,unset,Mongodb,Unset,使用MongoDB,我试图从包含约300万条记录的集合中删除一列 db.Listing.update( {}, { $unset: { Longitude: 1 } }, false, true); 当我执行这个命令时,服务器上的RAM会继续上升,直到耗尽RAM,然后服务器会被冲洗,需要重新启动。有没有更好的方法可以从一个大型集合中删除一个不会影响服务器的列?我想你的问题是系统问题。您应该确保没有限制mongod的资源。见此: 如果您正在使用virt。像openvz这样的系统,您可能希望停止或

使用MongoDB,我试图从包含约300万条记录的集合中删除一列

db.Listing.update( {}, { $unset: { Longitude: 1 } }, false, true);

当我执行这个命令时,服务器上的RAM会继续上升,直到耗尽RAM,然后服务器会被冲洗,需要重新启动。有没有更好的方法可以从一个大型集合中删除一个不会影响服务器的列?

我想你的问题是系统问题。您应该确保没有限制mongod的资源。见此:


如果您正在使用virt。像openvz这样的系统,您可能希望停止或调整过度提交功能。

有趣的是,您说确保您不将资源限制在mongod上,因为mongod似乎正在使用系统拥有的所有资源。我没有使用linux,我实际上使用的是Windows Server 2008。难道这就是问题所在,mongod的Win Server 2008实现还不是很好吗?我注意到的另一件事是,mongod捕获用于缓存集合的内存,但它从不释放该内存,它留在缓存中,因此我必须经常重新启动mongod服务以回收内存并保持服务器运行。所有实现都使用内存映射文件,为此分配内存是操作系统的工作。你注意到我链接中关于缓存内存的部分了吗?这就是你所说的所有记忆吗?