我对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的方式抛出错误吗?相当于什么?
感谢您的时间!
答案 0 :(得分:1)
由于mongoDB并不存储实际对象,而仅存储一个引用(因此在字段定义中为“ ref”),因此删除此文档没有任何问题。
由于这些引用仅用于$ lookups / populates()(例如,“左内部连接”),因此被引用的对象是否存在并不重要。
不过,您可以填充文档并更新“水合的”参考字段,猫鼬也会自动为您更新它们。