私がやろうとしていること。
userSchema
には、operationCountSchema
オブジェクトのリストが含まれています。私がやろうとしているのは、これらの操作カウントサブ文書が存在する場合(month_id
)フィールドのいずれかのcount
フィールドを更新する静的メソッドを作成することです。今月のoperationCountSchema
文書が存在しない場合は、新しい文書を作成する必要があります。マングースでこの行動を達成する方法はありますか?私はupsertを無駄に使用しようとしました。どのようにこれを行うでしょうか?ありがとう。Mongoose - Subdoc上のインクリメントフィールド(存在する場合)、それ以外は新規作成
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.
}
CODEはまた、この機能を実現することができる代替の方法上の任意の提案を歓迎します。
静的メソッドで値を渡して、サブ文書が存在するかどうかをチェックします( 'this'キーワードを使用)。存在する場合はコールバックを修正してコールします。そうでなければ、 'this.sub-docment ='を使用してサブ文書を作成し、コールバックを呼び出します。コールバックが呼び出されると、変更されたドキュメントを保存するために、mongooseドキュメントの 'save()'メソッドを使用します。 –
カウントをインクリメントするには、 'month_id'がマッチする必要があるのは何ですか? – Chinni
@Chinni month_idはdateIdentifierと一致する必要があります。 –