当前位置: 首页 > 面试题库 >

使用mongoose从Mongo中删除子文档

洪照
2023-03-14
问题内容

我正在尝试从猫鼬文档中存储的集合中删除一项。我的文档如下所示:

{
  "__v": 3,
  "_id": "5221040475f174d59a000005",
  "items": [
    {
      "sku": 1321654654613213,
      "name": "goldfish",
      "quantity": 12,
      "_id": "52224ed5bd9d340000000003"
    },
    {
      "sku": 12,
      "name": "goldfish",
      "quantity": 13,
      "_id": "52225dcbf2f1e40000000003"
    },
    {
      "sku": 1299,
      "name": "goldfish",
      "quantity": 13,
      "_id": "522260b6f2f1e40000000004"
    }
  ]
}

我想删除SKU为12的金鱼。我正在执行以下操作:

var inventory = res.locals.content;
inventory.items.remove( {sku: req.params.itemSku}, function (err, item) {
  if (err) {
    console.log('error occurred', err);
    res.send('error');
  }
  else {
    res.send('Item found and deleted');
    return; 
  }
});

当我这样做时,出现错误“ TypeError:无法读取未定义的属性’等于’”。我不明白为什么。


问题答案:

您需要inventory.items.pull(req.params.itemSku),然后打个inventory.save电话。.remove用于顶级文档



 类似资料:
  • 问题内容: 我正在使用Mongoose库通过node.js访问MongoDB 有没有办法 从文档中删除密钥 ?即不只是将值设置为null,而是将其删除? 问题答案: 在早期版本中,您需要删除node-mongodb-native驱动程序。每个模型都有一个收集对象,该对象包含node-mongodb- native提供的所有方法。因此,您可以执行以下操作: 从2.0版开始,您可以执行以下操作: 从2

  • 我知道如何。。。 删除单个文档。 但我不知道如何删除Mongoose收藏中的所有文档。我想在用户单击按钮时执行此操作。我假设我需要向某个endpoint发送AJAX请求并让该endpoint进行删除,但我不知道如何在endpoint处处理删除。 在我的例子中,我有一个集合,我想在用户单击按钮时删除所有文档。 api/datetime/index.js API/datetime/datetime.c

  • 问题内容: 以上似乎不起作用。记录仍然存在。 有人可以修复吗? 问题答案: 是一系列文档。所以它没有方法 您可以分别迭代和删除数组中的每个文档。 或-由于看起来您是通过(可能是)唯一的ID查找而不是来查找文档的。

  • 问题内容: 我对mongo和nodejs相当陌生,由于查询的结果是json,我只想将结果作为http请求返回,如下所示: 它有效,唯一的问题是我想从结果中隐藏_id字段(递归)。有建议以优雅的方式做到这一点吗? 问题答案: 试试这个解决方案:

  • 我正在使用gradle构建一个Spring Boot应用程序,我希望从war中删除文件,因为该文件将从外部加载(它运行在tomcat容器中,而不是嵌入式的)。 我查看了StackOverflow和Gradle文档,试图找出该做什么,但我不知道该绑定到哪个阶段,以及在创建war之前还是之后排除该文件。处理文件似乎也有多种方法。 我相信Maven使用作为等价物。

  • 我有一个NodeJS应用程序,其中我使用mongoose库与我的mongo数据库通信。 该应用程序是关于一个游戏,其中进行多个回合。并且每轮结束后,提交该轮的结果!我希望将值(一个json)推送到。我有一个和一个来确定推送的位置。 执行的位置: 它打印我没有错误,但db文档不受影响。中的项目仍然为零。