2013-05-03 15 views
6

Ich arbeite an einer Abfrage mit Mongoose, wo ich Filialdokumente überspringen und begrenzen muss, aber in derselben Abfrage möchte ich einige Felder im Dokument inkrementieren. Momentan ist meine Abfrage mit Verkettung aufgebaut, da habe ich viele Probleme bekommen, wenn ich es nur mit Optionen versucht habe. Das ist, was ich habe:Mongoose - Inkrement mit 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); } }); 

Ich legte die Ansichten 'für 1 erhöhen möchten, wenn diese Abfrage aufrufen, aber wie gesagt, habe ich versucht, eine Menge Dinge, und es hat einfach nicht funktioniert.

Antwort

14

Sie können findOneAndUpdate verwenden, um ein Dokument zu ändern und gleichzeitig eines zu holen.

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

Sie sind eine Klammer nach dem $ inc fehlen – Lion789

+1

Bitte beachten Sie: fieldToIncrement erhöht noch nicht in variable DB_RES – tuananh

+1

Sorry für die Noob-iness, aber wo kommt inc $ kommen? Ich bin mir nicht sicher, ob ich diesen Teil verstehe? – trainoasis