Het heeft geen zin om een alfanumerieke string te verhogen/verlagen; u moet de oorspronkelijke tekenreekswaarde in betekenisvolle delen scheiden voordat u MongoDB (of uw applicatiecode) vraagt om het numerieke gedeelte aan te passen.
Normaal gesproken met permalinks je zou ook waarden verhogen in plaats van verlagen -- de hele bedoeling van permalinks is om ervoor te zorgen dat een bepaalde link altijd naar dezelfde bron verwijst.
Het klinkt alsof je eigenlijk een reekspatroon wilt implementeren, waar je de volgende beschikbare reekswaarde vindt om te gebruiken.
Zie bijvoorbeeld:Een automatisch oplopende reeks maken in de MongoDB-handleiding.
Hier is een licht gewijzigde versie van de getNextSequence()
functie in de documentatie die gebruikmaakt van upsert
om een bestaand slakkentellerdocument te vinden of een nieuw document in te voegen. De retourwaarde is een nieuwe unieke slug:
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
Als je een startwaarde wilt verlagen, kun je een startwaarde voor je reeks invoegen en die in plaats daarvan verlagen met $inc: { seq: -1 }
.