我想删除旧的聊天记录,这意味着除了最新的10个记录之外的任何记录。
以下是我如何获得最新信息:
collection.find({"chatroom" : chatroom}).limit(10).sort({ time: -1 })
如何删除其他所有内容?
感谢。
答案 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集合重新插入
这可能不是最佳解决方案。