Det giver ikke mening at øge/dekrementere en alfanumerisk streng; du skal adskille den oprindelige strengværdi i meningsfulde dele, før du beder MongoDB (eller din applikationskode) om at justere den numeriske del.
Normalt med permalinks du ville også øge værdier i stedet for at reducere - hele hensigten med permalinks er at sikre, at et givet link altid peger på den samme ressource.
Det lyder som om du rent faktisk vil implementere et sekvensmønster, hvor du finder den næste tilgængelige sekvensværdi, du skal bruge.
Se f.eks.:Opret en automatisk stigningssekvens i MongoDB-manualen.
Her er en let ændret version af getNextSequence()
funktion i dokumentationen, der bruger upsert
for enten at finde et eksisterende snegletællerdokument eller indsætte et nyt. Returværdien er en ny unik 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
Hvis du ønsker at reducere fra en startværdi, kan du indsætte en startværdi for din sekvens og reducere den i stedet med $inc: { seq: -1 }
.