猫鼬有效地将子文档的最小/最大值保存在父文档中

时间:2018-06-24 23:38:45

标签: mongoose

我想在父项maxPrice和minPrice中保存任何子文档的最低和最高价格。这应该由父架构的更新前中间件处理

我的模式

var SubDocSchema = mongoose.Schema({
...
price : Number,
...
});

var ParentDocSchema = mongoose.Schema({
...
name : String,
maxPrice : Number,
minPrice : Number,
subs : { type : [SubDocSchema] },
...
});

SubDocSchema.pre('update', function(){
if(this.getUpdate().$set && this.getUpdate().$set.price){
  // get parent, and also update it's min/max price if necessary ...
}
})


ParentDocSchema.pre('update', function(){
if(this.getUpdate().$push && this.getUpdate().$push.children){
  // query all children and calc new min/max price and update on parent
}
})

在前置挂钩中,我评论了如何解决此问题。但是我的解决方案在速度和性能方面确实效率很低。我很确定,必须有一种更有效的方法。

0 个答案:

没有答案