2013-05-03 14 views
6

Sto lavorando su alcune query con Mongoose in cui ho bisogno di saltare e limitare i documenti secondari, ma nella stessa query voglio incrementare alcuni campi nel documento. Attualmente la mia query è stata costruita con il concatenamento, perché ho avuto un sacco di problemi quando ho provato a farlo solo con le opzioni. Questo è quello che ho:Mongoose - Incremento con findOne

Model.findOne({ shorten_id: id }).select('title content comments views').slice('comments', [0, 10]).exec(function(err, db_res) { if (err) { throw err; } else { console.log(db_res); } }); 

Vorrei incrementare depositati 'viste' per 1 quando si chiama questa query, ma come ho detto, ho provato un sacco di cose e semplicemente non ha funzionato.

risposta

14

È possibile utilizzare findOneAndUpdate per modificare un documento e recuperarne uno.

Model.findOneAndUpdate({ shorten_id: id }, { $inc: { fieldToIncrement: 1 }) 
    .select('title content comments views') 
    .slice('comments', [0, 10]) 
    .exec(function(err, db_res) { 
    if (err) { 
     throw err; 
    } 
    else { 
     console.log(db_res); 
    } 
    }); 
+6

Ti manca una parentesi dopo il $ inc – Lion789

+1

si prega di notare: fieldToIncrement ancora non aumenta in db_res variabili – tuananh

+1

dispiaciuto per il noob-iness, ma da dove viene $ inc viene? Non sono sicuro di aver capito quella parte? – trainoasis