node.js - 在 MongoDB 中删除时自动删除引用对象

假设我有这样的架构:

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

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

如果我删除了一个人,仍然会留下引用不存在的人的孤立分配,这会在数据库中造成多余的困惑。

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

最佳答案

您可以添加自己的'remove' Mongoose middleware在 Person 架构上将该人从引用它的所有其他文档中删除。在您的中间件函数中,this 是要删除的 Person 文档。

Person.pre('remove', function(next) {
    // Remove all the assignment docs that reference the removed person.
    this.model('Assignment').remove({ person: this._id }, next);
});

https://stackoverflow.com/questions/11904159/

相关文章:

ruby-on-rails - 查询 Mongoid 哈希字段

mongodb - mongoengine - 忽略模式验证的额外字段

mongodb - 如何在 MongoDB 中将子文档展平为根级别?

java - Mongodb避免重复条目

mongodb - 寻找 1 x 100 万个交叉点的最佳解决方案? Redis、Mongo、其他

excel - NODE.JS: fatal error - JS 分配失败 - 进程内存不足,同时

mongodb - 文档数据库 : Redundant data, 引用等(特别是 MongoDB)

mongodb - MongoDB中聚合($match)和查找之间的区别?

java - 如何直接从 Java 中的 mongodb 查询返回原始 JSON?

javascript - MongoError,错误 :E11000 duplicate key e