如何一键查找和删除 MongoDb 集合实体并节省系统资源



我有一个mongodb集合,其中包含生命周期短的实时数据。当我需要它们时,我也想删除一旦我找到,

以下是使用 morphia 包装器的伪代码:

for(LogEntity log: mongo.find(LogEntity.class, "grabMe", true)){
    mongo.delete(mongo.createQuery(LogEntity.class).filter("logId", log.id));
    //Do work and dispose the log
}

我正在对此进行一些测试,并且很难模拟重负载,因为这是Google GCM的一部分。

这是在每 2 秒从ScheduledExecutorService scheduleAtFixedRate馈送一次的Runnable中运行的。

这是行得通还是有更好的方法。在这种情况下,find()如何工作。我会通过从中删除来弄乱 find() 的内部数组吗?如果有很多LogEntity我不能把它们记在心里。

生命周期短的重负载日志记录,我将选择有上限的集合。 在此情况下,您不能删除 CAPPED 集合中的文档。

另一方面,如果要选择普通集合进行日志记录并执行定时清理,则查找和删除循环会很慢。 如果代码foreach item in collection.find(query) {collection.remove({_id:item._id};}请改用collection.remove(query)方法。

最新更新