2011-12-24 16 views
13

के साथ एक दस्तावेज़ संपत्ति बढ़ाने के लिए मैं 1 हर बार मेरे दस्तावेज़ एक्सेस किया जाता है द्वारा views संख्या में भी वृद्धि करना चाहते हैं। अब तक, मेरे कोड है:

Document 
    .find({}) 
    .sort('date', -1) 
    .limit(limit) 
    .exec(); 

कहाँ है $inc यहाँ में फिट?

+0

क्या इससे आपकी मदद मिली? अगर मुझे नहीं पता है। –

उत्तर

30

कभी नेवला थे, लेकिन जल्दी से डॉक्स 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(); 

चीयर्स और अच्छी किस्मत!

6

मैं .. एक और समस्या है, जो एक तरह से $ इंक से संबंधित है में भाग तो मैं इसे यहाँ पोस्ट के रूप में यह किसी और मदद कर सकता है जाएगा। मैं निम्नलिखित कोड है:

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

एक अलग मॉड्यूल से मैं की तरह

var saver = require('./saver.js'); 

saver.increase('555f49f1f9e81ecaf14f4748', 'counter', 1, 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 
    } 
} 
+6

आपके कोड के पहले संस्करण में बग यह है: '{$ inc: {key: राशि}}'। आप वास्तव में 'कुंजी' चर का उपयोग नहीं कर रहे हैं, लेकिन ऑब्जेक्ट कुंजी को स्ट्रिंग '' कुंजी 'बनाते हैं। इस कोड को लिखने का सही तरीका '{$ inc: {[key]: राशि}}' है, [ES2015 गणना की गई संपत्ति कुंजी] का उपयोग करके (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/ऑपरेटर/Object_initializer)। – Joseph

संबंधित मुद्दे