在 MongoDB 中删除时自动删除引用对象

2024-05-25

假设我有一个这样的架构:

var Person = new Schema({
    name: String
});

var Assignment = new Schema({
    name: String,
    person: ObjectID
});

如果我删除一个人,仍然可能会留下引用不存在的人的孤立分配,这会在数据库中造成无关的混乱。

有没有一种简单的方法可以确保当一个人被删除时,所有对该人的相应引用也将被删除?


您可以添加自己的'remove'猫鼬中间件 http://mongoosejs.com/docs/middleware.html on the Person架构以从引用该人的所有其他文档中删除该人。在你的中间件函数中,this is the Person正在被删除的文档。

Person.pre('remove', function(next) {
    // Remove all the assignment docs that reference the removed person.
    this.model('Assignment').remove({ person: this._id }, next);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MongoDB 中删除时自动删除引用对象 的相关文章

随机推荐

  • 以编程方式缩放 UIWebView,无需手势 - 中心点计算不正确

    问题 我的 iPad 应用程序中有一个 UIWebView 我需要以编程方式缩放它 但不使用手势 点击 该应用程序 有一个 和一个 按钮 用于以用户定义的增量放大和缩小 这是一个针对视障人士的应用程序 以前 当我的应用程序运行时 此 缩放按
  • 将 UTC 日期转换为 PHP 本地时间

    我使用以下方法将 UTC 日期存储到数据库中 utc gmdate M d Y h i s A 然后我想将保存的 UTC 日期转换为客户端的本地时间 我怎样才能做到这一点 Thanks 如果客户端指的是浏览器 那么您首先需要从浏览器将时区名
  • 在 Jenkins 管道脚本中找不到文件

    我正在尝试让当前在 Jenkins master 上运行的管道脚本在远程 Jenkins 节点上执行 但我有一个奇怪的现象FileNotFound例外 我能够重现该问题的最基本版本的管道是这样的 node remoteNode env SE
  • WiX 属性引用另一个属性

    我正在尝试为我的应用程序创建多个快捷方式 通过使用在命令行上传递不同的参数Arguments的属性Shortcut http wix sourceforge net manual wix2 wix xsd shortcut htm元素 我希
  • 如何在 Jetty 中配置 webapps 部署目录

    这一定是一个非常简单的答案 但我似乎找不到 我刚刚开始使用码头7 0 2 on CentOS 5 5并部署了一个webapp使用默认设置 只需将我的 WAR 文件放入 webapps目录 当 Jetty 启动时 它将战争提取到 tmp je
  • 是否可以向 Google Home 设备发送语音通知

    当我们收到一些特定事件但不确定是否支持 可能时 我们希望通过我们的服务向 Google Home 设备发送语音通知 例如 当厨师快准备好时 我们会通知用户 如下所示 嘿 安德 你的饭菜将在 5 分钟内准备好 别忘了把它拿出来 有一些脚本声称
  • 检查包含 URL 的字符串“http://”

    我正在尝试检查用户输入的 URL 但我正在与一些错误和警告作斗争 BOOL textFieldShouldReturn UITextField textField check http NSString check textField te
  • 引起原因:java.lang.NumberFormatException:无效的双精度:“”带有空白值

    当我遇到错误时JSON字符串有一些空白值 从服务器获取 如何处理空白值 这是 JSON status success data id 1 name ABC address ABC QWE lat 16 799999 lng 96 15000
  • 使用 YouTube API 检查视频是否可嵌入

    我试图弄清楚 YouTube 视频是否可以使用 YouTube Data API v3 嵌入 从类似问题的答案中我注意到视频的 status embeddable 属性 对于这样的请求 https www googleapis com yo
  • 如何使用 JavaScript 隐藏滚动条

    怎样才能隐藏滚动条呢 我想这样做是因为滚动条不太好 overflow hidden没有用 因为我的 div 元素还有许多其他元素 所以设置overflow不能解决我的问题 你可以用这个隐藏滚动条 document body style ov
  • 在 MVC3 应用程序的编辑操作方法中使用 AutoMapper

    这是我的控制器代码 它 100 按照我的需要工作 但是 POST 方法没有使用 AutoMapper 这是不行的 如何在此操作方法中使用 AutoMapper 我使用实体框架 4 和存储库模式来访问数据 public ActionResul
  • 防止按住 Shift 键时按下按键

    I m trying to prevent certain keys from being entered into an input box but only if that particular key is pressed whils
  • 默认 GCS 存储桶名称

    根据https cloud google com appengine docs python googlecloudstorageclient activate https cloud google com appengine docs p
  • 如何将第一行更改为R中的标题?

    我有下表 X 5 X 6 X 7 X 8 X 9 X 10 X 11 X 12 X 13 17 Zip CuCurrent PaCurrent PoCurrent Contact Ext Fax email Status 18 74136
  • 将回形针 url 添加到 json

    通常在 html 中 我们会在图像标签内使用 Model field url thumb 如何在 json 上执行此操作 尤其是使用 hash secret 如果这对任何人都有帮助 我找到了一个很好的方法来做到这一点 class MyMod
  • 在Python中比较字符串的最快方法

    我正在用 Python 编写一个脚本 该脚本将允许用户输入一个字符串 该字符串将是指示脚本执行特定操作的命令 为了便于讨论 我会说我的命令列表是 lock read write request log 现在 我希望用户能够输入 log 一词
  • 如何在winform应用程序中生成产品收据?

    我第一次开发 winform 应用程序 我有一个 gridview 其中包含用户已购买的产品列表 我点击了一个 打印 按钮 允许用户生成如下收据 所以在这里我很困惑是否应该使用 winform默认RDLC或Crystal Report 或者
  • 在 Perl 中,“$a”和“$b”在 sort() 函数之外还有什么特殊用途吗?

    我问了一个关于 Perl 中 a 和 b 使用的问题sort 前几天的功能 Perl 的 sort 函数中的 a 和 b 到底是什么 https stackoverflow com questions 26127617 what exact
  • IIS - 打开基本身份验证会导致登录重定向循环

    在 IIS 站点上启用基本身份验证后 我尝试访问该站点 它不显示登录表单 而是将我重定向到其他地方 其中包含一个我无法弄清楚的长链接 http 我的域名 Login Login Login ReturnUrl 2FLogin 2FLogin
  • 在 MongoDB 中删除时自动删除引用对象

    假设我有一个这样的架构 var Person new Schema name String var Assignment new Schema name String person ObjectID 如果我删除一个人 仍然可能会留下引用不存