Nie ma sensu zwiększać/zmniejszać ciągu alfanumerycznego; musisz rozdzielić oryginalną wartość ciągu na znaczące części, zanim poprosisz MongoDB (lub kod aplikacji) o dostosowanie części numerycznej.
Zwykle z permalinkami będziesz także zwiększać wartości, a nie zmniejszać - cała intencja permalinków polega na upewnieniu się, że dany link zawsze wskazuje ten sam zasób.
Wygląda na to, że rzeczywiście chcesz zaimplementować wzorzec sekwencji, w którym znajdziesz następną dostępną wartość sekwencji do użycia.
Na przykład zobacz:Tworzenie sekwencji autoinkrementacji w podręczniku MongoDB.
Oto nieco zmodyfikowana wersja getNextSequence()
funkcja w dokumentacji, która używa upsert
aby znaleźć istniejący dokument licznika informacji lub wstawić nowy. Zwracana wartość to nowy unikalny ślimak:
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
Jeśli chcesz zmniejszyć wartość początkową, możesz wstawić wartość początkową dla swojej sekwencji i zmniejszyć ją za pomocą $inc: { seq: -1 }
.