ドキュメントにアクセスするたびにviews
のカウントを1ずつインクリメントしたいと思います。これまでのところ、私のコードは:
Document
.find({})
.sort('date', -1)
.limit(limit)
.exec();
$inc
はここに入りますか?
ドキュメントにアクセスするたびにviews
のカウントを1ずつインクリメントしたいと思います。これまでのところ、私のコードは:
Document
.find({})
.sort('date', -1)
.limit(limit)
.exec();
$inc
はここに入りますか?
はマングースを使用していないが、すぐにあなたのために動作します、それはこのように思えるドキュメントhereを見ているん:
# create query conditions and update variables
var conditions = { },
update = { $inc: { views: 1 }};
# update documents matching condition
Model.update(conditions, update).limit(limit).sort('date', -1).exec();
乾杯と幸運を!
別の問題が発生しました。これは$ incに関連しています。他の人に役立つかもしれないので、ここに投稿します。私はしかし、これは必要なカウンタを増加させないだろう
var saver = require('./saver.js');
saver.increase('555f49f1f9e81ecaf14f4748', 'counter', 1, function(err,data){
//error handling
}
のようなものを呼ぶだろう別のモジュールから
var Schema = require('models/schema.js');
var exports = module.exports = {};
exports.increase = function(id, key, amount, callback){
Schema.findByIdAndUpdate(id, { $inc: { key: amount }}, function(err, data){
//error handling
}
}
:私は、次のコードを持っています。どうやら、キーを更新オブジェクトに直接渡すことは許されていません。これは、オブジェクトフィールド名の文字列リテラルの構文と関係があります。解決策は次のように更新オブジェクトを定義することでした:
exports.increase = function(id, key, amount, callback){
var update = {};
update['$inc'] = {};
update['$inc'][key] = amount;
Schema.findByIdAndUpdate(id, update, function(err, data){
//error handling
}
}
コードの最初のバージョンのバグは '{$ inc:{key:amount}}'です。あなたは実際にそこに 'key'変数を使用していませんが、オブジェクトのキーを文字列' 'key" 'にします。このコードを書く正しい方法は、[ES2015計算されたプロパティキー](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference)を使用して '{$ inc:{[key]:amount}}' /演算子/ Object_initializer)。 – Joseph
これはあなたを助けましたか?もし私に知らせてくれないなら。 –