[英]mongodb delete old chat
我想刪除舊的聊天記錄,這意味着除了最新的10個記錄之外的任何記錄。
這是我如何得到最新的:
collection.find({"chatroom" : chatroom}).limit(10).sort({ time: -1 })
如何刪除其他所有內容?
謝謝。
您可以執行查詢以獲取第10個最舊的查詢,然后刪除早於此的查詢。
var oldest = find({"chatroom" : chatroom}).limit(1).skip(10).sort({ time: -1 }).next();
remove({"chatroom" : chatroom, time : {$lt : oldest.time }})
如果通過適當的過濾器獲取相關文檔,則必須迭代結果集的每個項目並單獨刪除它。
如何使用上限集合 ?
在size
參數中保留足夠的空間並將max
設置為10。
您可能希望使用sort({ $natural: -1 })
進行swtich sort({ time: -1 })
以獲得更好的性能,如果您切換到上限集合(我猜兩個訂單都是相同的)。
你需要多久這樣做? 我們談論了多少個文檔?
其中一個選項:將最新的10個移動到某個臨時集合,從temp集合中重新插入日志集合
這可能不是最佳解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.