MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose __v wann ändert es sich

Der Autor des Artikels war nicht ganz klar, wann das Versionsinkrement intern angewendet wird, weil, wie Sie herausgefunden haben, das Versionsfeld nicht aktualisiert wird, wenn Sie den Update-Befehl verwenden.

Wenn Sie den Update-Befehl durch Mongoose ersetzen, pull Methode auf Ihrem Array wird das Versionsfeld inkrementiert:

var t = Test();
t.name = 'hi'
t.arr = [1, 2, 3, 4, 5, 6];

t.save(function (err, result) {
    console.log(result);

    // use Mongoose pull method on the array
    t.arr.pull(3);

    t.save(function(err2, result2) {
        console.log(result2)
    });
});

Ergebnisse:

{ __v: 0,
  name: 'hi',
  _id: 53f59d2a6522edb12114b98c,
  arr: [ 1, 2, 3, 4, 5, 6 ] }
{ __v: 1,
  name: 'hi',
  _id: 53f59d2a6522edb12114b98c,
  arr: [ 1, 2, 4, 5, 6 ] }

Bearbeiten:

Die Update-Methode des Modells erstellt im Grunde nur die Abfrage und führt sie aus. Die Versionsprüfung / Inkrementierung erfolgt, wenn Sie die Speichermethode verwenden