mongodb删除旧聊天

时间:2011-06-17 09:09:28

标签: javascript mongodb node.js

我想删除旧的聊天记录,这意味着除了最新的10个记录之外的任何记录。

以下是我如何获得最新信息:

collection.find({"chatroom" : chatroom}).limit(10).sort({ time: -1 })

如何删除其他所有内容?

感谢。

4 个答案:

答案 0 :(得分:3)

您可以执行查询以获取第10个最旧的查询,然后删除早于此的查询。

var oldest = find({"chatroom" : chatroom}).limit(1).skip(10).sort({ time: -1 }).next();
remove({"chatroom" : chatroom, time : {$lt : oldest.time }})

答案 1 :(得分:0)

如果通过适当的过滤器获取相关文档,则必须迭代结果集的每个项目并单独删除它。

答案 2 :(得分:0)

如何使用capped collection

size参数中预留足够的空间,并将max设置为10。

如果切换到上限集合(我猜两个订单都相同),您可能希望使用sort({ time: -1 })sort({ $natural: -1 })以获得更好的性能。

答案 3 :(得分:-1)

您需要多久才能这样做? 我们谈论了多少文档?

其中一个选择: 将最新的10个移动到一些临时收藏 清空日志集合 从temp集合重新插入

这可能不是最佳解决方案。