簡體   English   中英

mongodb刪除舊聊天

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM