首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除带有Delete请求的MongoDB集合中的最后一个文档

删除带有Delete请求的MongoDB集合中的最后一个文档
EN

Stack Overflow用户
提问于 2021-01-29 03:34:38
回答 1查看 94关注 0票数 0

我是REST的新手,我想简单地使用mongoose的删除路由删除我的mongoDB集合中的最后一篇帖子。这里的其他答案没有解释如何通过路由来实现这一点。仅使用db对象。

这是我当前路由的样子(我没有收到任何错误,但它没有删除):

代码语言:javascript
运行
复制
//DELETE LAST POST
router.delete('/last', async (req,res) => {
  try {
    const removedPost = await Post.findAndModify({query :{},"sort": { "_id": -1 }, remove:true})
    res.json(removedPost)
  }catch(err){
    res.json({ message: err })
  }
})

我也尝试过用findOneAndDelete()来做这件事,但它是一样的,日志中没有错误,200OK响应,没有帖子删除:

代码语言:javascript
运行
复制
const removedPost = await Post.findOneAndDelete(
      { __v: 0 },
      { sort: { "date": -1 } }
    );

我也像这样尝试过,没有可选的'projection‘,因为我理解它from the docs

代码语言:javascript
运行
复制
const removedPost = await Post.findOneAndDelete(
      {},
      { sort: { "date": -1 } }
    );

我在邮递员中调用这条路由:https://ag-sheets-api.herokuapp.com/posts/last,没有任何身体。它的响应是200 OK,并且:

代码语言:javascript
运行
复制
{
    "message": {
        "stringValue": "\"last\"",
        "kind": "ObjectId",
        "value": "last",
        "path": "_id",
        "reason": {}
    }
}

这是其中一个帖子的样子:

代码语言:javascript
运行
复制
_id:6012f937a892270017007b31
title:"97273282974158320"
date:2021-01-28T17:49:43.582+00:00
__v:0
en1:"<div class="contact_us"><p style="font-size: 16px; font-weight: bold; ..."
en2:"<div class="qw"><div class="qe" data-country="cn.svg"><p class="qr">Ch..."
en3:"<div class="qw"><div class="qe" data-country="iq.svg"><p class="qr">Ir..."
en4:"<div class="qw"><div class="qe" data-country="pe.svg"><p class="qr">Pe..."
en5:"<div class="qw"><div class="qe" data-country="ta.svg"><p class="qr">Tr..."
fr1:"<div class="contact_us"><p style="font-size: 16px; font-weight: bold; ..."
fr2:"<div class="qw"><div class="qe" data-country="cn.svg"><p class="qr">Ch..."
fr3:"<div class="qw"><div class="qe" data-country="iq.svg"><p class="qr">Ir..."
fr4:"<div class="qw"><div class="qe" data-country="pe.svg"><p class="qr">Pe..."
fr5:"<div class="qw"><div class="qe" data-country="ta.svg"><p class="qr">Tr..."
de1:"<div class="contact_us"><p style="font-size: 16px; font-weight: bold; ..."
de2:"<div class="qw"><div class="qe" data-country="cn.svg"><p class="qr">Ch..."
de3:"<div class="qw"><div class="qe" data-country="iq.svg"><p class="qr">Ir..."
de4:"<div class="qw"><div class="qe" data-country="pe.svg"><p class="qr">Pe..."
de5:"<div class="qw"><div class="qe" data-country="ta.svg"><p class="qr">Tr..."

大多数stackoverflow对这个问题的回答如下所示,但我不明白如何在mongoose DELETE路由中实现这一点,毕竟没有db对象是吧?他们在哪里做这个?:

代码语言:javascript
运行
复制
db.coll.find().sort({_id:-1}).limit(100);

It looks like using limit on the standard mongo remove operation isn't supported though, so you might use something like this to delete the 100 documents:

for(i=0;i<100;i++) {
    db.coll.findAndModify({query :{}, sort: {"_id" : -1}, remove:true})
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-29 03:49:41

您可以像这样尝试:

代码语言:javascript
运行
复制
let x = await Post.findOne({}).sort({date: -1});
await x.remove();

所以你的路线应该是这样的:

代码语言:javascript
运行
复制
router.delete("/", async (req, res) => {
  try {
    let x = await Post.findOne({}).sort({ date: -1 });
    await x.remove();
    res.status(200).json({ message: "deleted place" })
  } catch (err) {
    res.json({ message: err });
  }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65944047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档