我正在尝试做什么。
我有一个userSchema
其中包含一个operationCountSchema
对象的列表。我试图做的是创建一个静态方法,如果它存在(由month_id
标识)字段,则更新count
字段中的某个操作计数子文档。如果operationCountSchema
文档在当月不存在,它应该创建一个新文档。有没有办法在猫鼬中实现这种行为?我曾尝试使用upsert无济于事。如何做到这一点?谢谢。猫鼬 - 在Subdoc上增加字段如果存在,否则创建新的
CODE
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.
}
而且,在此功能可以实现替代方式中的任何建议,欢迎。
通过静态方法传递值并检查子文档是否存在(使用'this'关键字)。如果存在修改和调用回调。否则使用'this.sub-docment ='创建子文档并调用回调。一旦调用回调函数,使用mongoose文件'save()'方法保存修改过的文档。 –
'month_id'需要匹配以增加计数值是什么? – Chinni
@Chinni month_id需要匹配dateIdentifier。 –