我有以下型号:
var asdSchema = new Schema({
ratings: [{
item: { type: Schema.Types.ObjectId, ref: 'Items' },
rating: Number,
date: { type: Date, default: Date.now }
}]
});
我有一个findByIdAndUpdate
推送到数组,但是,如果项目ID已经存在,那么更新评级的好方法是什么?
{ $push: { ratings: { item: item, rating: rating }} }
基本上只需要为item
字段进行upsert。
编辑:当前设置检查评级是否存在,如果存在,则执行以下操作:
User.findOneAndUpdate(
{ _id: userId, 'ratings.item': item },
{ '$set': { 'ratings.$.rating': rating } },
...
否则将新评级推向评级阵列。可能会更快我想......