Mongoose 保存更新的参考字段时的猫鼬行为

Mongoose 保存更新的参考字段时的猫鼬行为,mongoose,Mongoose,在填充(或未填充)模型中更改ref值时,我希望能够了解mongoose的行为 假设我们有: var CountrySchema = new Schema({ _capital: { type: ObjectId, ref: City } }); Country.findOne({}).populate('_capital').exec((err, country) => { /* CODE HERE */ country.save((err, done); }); 如果我把

在填充(或未填充)模型中更改ref值时,我希望能够了解mongoose的行为

假设我们有:

var CountrySchema = new Schema({
  _capital: { type: ObjectId, ref: City }
});

Country.findOne({}).populate('_capital').exec((err, country) => {
  /* CODE HERE */
  country.save((err, done);
});
如果我把

country._capital = { name: 'Paris'};
这将

  • 如果资本尚未设定,则会导致错误。(JS、WTF中的运算符重载?)
  • 如果设置了_capital但未填充模型,则同样会导致CastError
  • 如果设置了_capital并且填充了模型,则工作。引用的城市项目将替换为新的巴黎项目。引用的ObjectId(_大写)已更改,旧的城市文档将从城市集合中删除
所有这些对我来说都不是淫秽的,我仍然想知道会发生什么,例如什么时候

  • 将ID而不是对象指定给填充的ref字段
  • 使用对象/ID扩展填充的ref数组
  • 从填充的模型中删除参考值
它有系统吗?这是错误的做事方式吗?文件里有吗

目前是404

没有多大帮助

在我开始测试自己之前,我想知道你们是否能帮我解决这个问题

还有一个问题:我目前正在使用4.5.2。有推荐的LTS版本吗

谢谢

M