簡體   English   中英

如何使用查詢運算符執行 mongoose deleteMany()?

[英]How to perform mongoose deleteMany() with query operators?

我想從最近為特定用戶創建的帖子開始刪除 X 個帖子。

如何使用 mongoose 應用此邏輯,以便我可以只執行一個數據庫操作,而不必先查詢這些帖子並一一刪除它們?

我發現使用帶有 $ 的查詢和投影運算符非常令人困惑,任何幫助將不勝感激。

下面我添加了關於它應該如何工作的偽代碼。

謝謝!

const userId = "123456"
const deleteCount = 6

const deletedPosts = await Post.deleteMany({
      .where { userid == userId) }
      .sort({createdAt: -1}) // delete by most recent
      .limit(deleteCount)    // only delete 6 (most recent) posts
      }, {new: true})        // return results of operation

console.log(deletedPosts.deletedCount) // -> should be "6"

使用 deleteMany 或 findAndModify 時不能設置限制。 因此,如果您想精確限制刪除的文檔數量,您需要分兩步完成。

  1. db.getCollection('users').find({}, {class : 4}) .limit(2) .sort({StudentAge: -1}) .toArray() .map(function(doc) { return doc._id; }); //returns the array of id's

  2. db.getCollection('users').deleteMany({_id: {$in: [ "s3", "s4" ]}})//put the array of id's

模型中的數據

第一次查詢

第二次查詢

最終輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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