Não faz sentido incrementar/diminuir uma string alfanumérica; você precisa separar o valor da string original em partes significativas antes de pedir ao MongoDB (ou ao código do seu aplicativo) para ajustar a parte numérica.
Normalmente com links permanentes você também estaria incrementando valores em vez de decrementando - toda a intenção dos permalinks é garantir que um determinado link esteja sempre apontando para o mesmo recurso.
Parece que você realmente deseja implementar um padrão de sequência, onde você encontra o próximo valor de sequência disponível a ser usado.
Por exemplo, consulte:Criar uma sequência de incremento automático no manual do MongoDB.
Aqui está uma versão ligeiramente modificada do
getNextSequence()
função na documentação que usa upsert
para localizar um documento de contador de slug existente ou inserir um novo. O valor de retorno é um novo slug exclusivo: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 você quiser diminuir de algum valor inicial, poderá inserir um valor inicial para sua sequência e reduzi-lo com
$inc: { seq: -1 }
.