javascript – Mongoose – 在Subdoc上增加字段(如果存在),否则创建新的

我想做什么.

我有一个userSchema,其中包含operationCountSchemaobjects的列表.我想要做的是创建一个静态方法,如果它存在(由month_id标识)字段,则更新其中一个操作计数子文档上的计数字段.如果当前月份不存在operationCountSchema文档,则应创建新文档.有没有办法在猫鼬中实现这种行为?我试过使用upsert无济于事.怎么会这样做?谢谢.

var operationCountSchema = mongoose.Schema({
    month_id: String,
    count: { type: Number, default: 0 }
}, {_id : false});

var userSchema = mongoose.Schema({
    username : { type: String, unique: true, required: true },
    email: { type: String, unique: true, required: true },
    password: String,
    operation_counts: [operationCountSchema]
});

userSchema.statics.incrementOperationCount = function(userID, callback) {
    var currDate = new Date();
    var dateIdentifier = currDate.getFullYear() + "-" + currDate.getMonth();
    //NEED TO INCREMENT OPERATION COUNT IF ONE FOR MONTH EXISTS, 
    //ELSE IF IT DOES NOT EXIST, CREATE A NEW ONE.
}

此外,欢迎任何关于可以实现此功能的替代方式的建议.

解决方法:

我想你想要findOneAndUpdate() with upsert:true:

operationCountSchema.findOneAndUpdate({
  month_id : dateIdentifier,
}, { 
  $inc : { count : 1 }
}, {
  upsert : true
}, callback);

(另)

上一篇:javascript – mongoose是嵌入式文档对象的猫鼬对象吗?


下一篇:node及其相关知识的学习小小结