Nemá smysl zvyšovat/snižovat alfanumerický řetězec; musíte rozdělit původní hodnotu řetězce do smysluplných částí, než požádáte MongoDB (nebo kód vaší aplikace) o úpravu číselné části.
Normálně s permalinks také byste hodnoty spíše zvyšovali než snižovali – celý záměr trvalých odkazů je zajistit, aby daný odkaz vždy směřoval na stejný zdroj.
Zní to, jako byste ve skutečnosti chtěli implementovat sekvenční vzor, kde najdete další dostupnou sekvenční hodnotu k použití.
Viz například:Vytvoření sekvence automatického zvyšování v příručce MongoDB.
Zde je mírně upravená verze getNextSequence()
funkce v dokumentaci, která používá upsert
buď najít existující dokument počítadla slimáků, nebo vložit nový. Vrácená hodnota je nový jedinečný 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
Pokud chcete snížit z nějaké počáteční hodnoty, můžete vložit počáteční hodnotu pro vaši sekvenci a místo toho ji snížit pomocí $inc: { seq: -1 }
.