Няма смисъл да увеличавате/намалявате буквено-цифров низ; трябва да разделите стойността на оригиналния низ на значими части, преди да поискате от MongoDB (или кода на вашето приложение) да коригира цифровата част.
Обикновено с постоянни връзки вие също така ще увеличавате стойностите, вместо да намалявате - цялото предназначение на постоянните връзки е да гарантират, че дадена връзка винаги сочи към един и същ ресурс.
Изглежда, че всъщност искате да приложите модел на последователност, където намирате следващата налична стойност на последователност, която да използвате.
Например вижте:Създаване на автоматично увеличаваща се последователност в ръководството на MongoDB.
Ето една леко модифицирана версия на getNextSequence()
функция в документацията, която използва upsert
за да намерите съществуващ документ за брояч на охлюви или да вмъкнете нов. Върнатата стойност е нов уникален 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
Ако искате да намалите от някаква начална стойност, можете да вмъкнете начална стойност за вашата последователност и вместо това да я намалите с $inc: { seq: -1 }
.