编辑数组中的文档(如果存在),否则推送到数组

时间:2015-05-09 01:21:36

标签: mongodb mongoose mongodb-query

我有以下型号:

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 } },
    ...

否则将新评级推向评级阵列。可能会更快我想......

0 个答案:

没有答案