Non ha senso incrementare/decrementare una stringa alfanumerica; è necessario separare il valore della stringa originale in parti significative prima di chiedere a MongoDB (o al codice dell'applicazione) di modificare la parte numerica.
Normalmente con permalink aumenteresti anche i valori invece di decrementarli:l'intero intento dei permalink è garantire che un determinato link punti sempre alla stessa risorsa.
Sembra che tu voglia effettivamente implementare un modello di sequenza, in cui trovi il successivo valore di sequenza disponibile da utilizzare.
Ad esempio, vedere:Creare una sequenza con incremento automatico nel manuale di MongoDB.
Ecco una versione leggermente modificata di getNextSequence()
funzione nella documentazione che utilizza upsert
per trovare un documento contatore lumache esistente o inserirne uno nuovo. Il valore restituito è un nuovo slug unico:
function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
upsert: true,
new: true,
}
);
// Return the new slug (eg: "example_1")
return name + '_' + ret.seq;
}
> getNextSequence("example")
example_1
> getNextSequence("example")
example_2
> getNextSequence("example")
example_3
Se vuoi decrementare da un valore iniziale, puoi inserire un valore iniziale per la tua sequenza e ridurlo invece con $inc: { seq: -1 }
.