猫鼬(MongoDB)-关系不会停止删除

时间:2019-10-17 23:57:16

标签: node.js mongodb mongoose

我对MongoDB / Mongoose很陌生。 在我的webapp(快速)中,我有以下猫鼬模型。

var mongoose = require("mongoose");

var visitSchema = new mongoose.Schema({
    Study: {type: mongoose.Schema.Types.ObjectId, ref: "study"},
    Site:  {type: mongoose.Schema.Types.ObjectId, ref: "site"},
    Subject: {type: mongoose.Schema.Types.ObjectId, ref: "subject"},
    Phase: {type: mongoose.Schema.Types.ObjectId, ref: "phase"},
    Visit_date: Date
},{ strict: false });

module.exports = mongoose.model("visit", visitSchema);

如上所示,访问与主题等其他模型有关系。

但是当我看到删除带有附加访问权限的主题时,我的应用程序没有引发错误时,我感到很惊讶。完整性在MongoDB中如何工作?那不应该以RDBMS的方式抛出错误吗?相当于什么?

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

由于mongoDB并不存储实际对象,而仅存储一个引用(因此在字段定义中为“ ref”),因此删除此文档没有任何问题。

由于这些引用仅用于$ lookups / populates()(例如,“左内部连接”),因此被引用的对象是否存在并不重要。

不过,您可以填充文档并更新“水合的”参考字段,猫鼬也会自动为您更新它们。