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

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

方心思
2023-03-14
问题内容

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

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

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

如果删除一个人,那么仍然存在孤立的作业,这些作业引用了一个不存在的人,这在数据库中造成了混乱。

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


问题答案:

您可以在架构上添加自己的'remove'Mongoose
中间件,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);
});


 类似资料:
  • 当执行进入非Reps.remove行时,删除不是删除指定索引处的对象。为什么? 此解决方案打印:[a, b, c, d, e, f]当它应该是b, d, f时

  • 问题内容: 文件: 有没有办法从数组中提取特定对象?IE如何从项数组中提取ID为23的整个项对象。 我努力了: 但是我很确定我没有正确使用’pull’。据我了解,pull将从数组中拉出字段,而不是对象。 关于如何将整个对象从数组中拉出的任何想法。 另外,我尝试在mongoose / nodejs中执行此操作,也不确定这种类型的内容是否在mongoose API中,但我找不到它。 问题答案: 尝试.

  • 本文向大家介绍如何使用Java在MongoDB中删除索引?,包括了如何使用Java在MongoDB中删除索引?的使用技巧和注意事项,需要的朋友参考一下 在MongoDB中删除索引,您需要使用dropIndex()方法。 语法 在Java中,可以使用dropIndex()方法删除索引,您需要将索引的类型(升序或降序)和在其上创建字段的名称传递给该方法。 示例 输出结果

  • 问题内容: 在文档(http://dev.mysql.com/doc/refman/6.0/en/drop- table.html )中未明确提及。我问是因为我刚刚在Rails项目中看到了一个奇怪的数据库迁移,其中开发人员在删除表之前删除了所有索引,这似乎是不必要的。 问题答案: 是的,它确实。 但是,如果您具有诸如RESTRICT之类的外键约束来确保与其他表的参照完整性,则需要在删除或截断表之前

  • 在 MongoDB 中,您可以使用 remove() 方法从集合中删除文档,语法格式如下: db.collection_name.remove(     <query>,     {         justOne: <boolean>,         writeConcern: <document>     } ) 参数说明: query:可选参数,定义要删除文档的条件; justOne:可选

  • 在 MongoDB 中,可以使用 drop() 方法来从数据库中删除指定集合,它会从数据库中完全删除一个集合,并且不会留下与已删除集合关联的任何索引。 drop() 方法在使用时不需要带有任何参数,并且在使用参数调用时会产生错误,该方法的语法格式如下: db.collection_name.drop() 其中 collection_name 为要删除的集合名称,方法调用成功会返回 true,否则返