MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Kann ich Text in Mongodb dekrementieren?

Es macht keinen Sinn, eine alphanumerische Zeichenfolge zu inkrementieren/dekrementieren; Sie müssen den ursprünglichen Zeichenfolgenwert in aussagekräftige Teile aufteilen, bevor Sie MongoDB (oder Ihren Anwendungscode) auffordern, den numerischen Teil anzupassen.

Normalerweise mit Permalinks Sie würden auch Werte erhöhen, anstatt sie zu verringern – die ganze Absicht von Permalinks besteht darin, sicherzustellen, dass ein bestimmter Link immer auf dieselbe Ressource verweist.

Es hört sich so an, als ob Sie tatsächlich ein Sequenzmuster implementieren möchten, in dem Sie den nächsten verfügbaren Sequenzwert finden, der verwendet werden soll.

Siehe zum Beispiel:Create an Auto-Incrementing Sequence im MongoDB-Handbuch.

Hier ist eine leicht modifizierte Version von getNextSequence() Funktion in der Dokumentation, die upsert verwendet um entweder ein vorhandenes Slug-Counter-Dokument zu finden oder ein neues einzufügen. Der Rückgabewert ist ein neuer eindeutiger 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

Wenn Sie einen Startwert verringern möchten, können Sie einen Startwert für Ihre Sequenz einfügen und diesen stattdessen mit $inc: { seq: -1 } reduzieren .