0

mongoに増分番号を保持させて、その番号に電話をかけ、そこから文字列を生成できるようにします。

x = 1e10
x.toString(36).substring(2,7)

>>'dqpds'

モンゴから電話をかけるたびに番号を増やす方法があります

db.counter.update({ _id: 1 }, { $inc: { seq: 1 } }, {upsert: true}, 
    function(err, val){
    //...
})

ただし、最初に番号を1e10のように設定して、5文字の長さの文字列を取得したいのですが、データベースへの呼び出しは1回だけにしたいです。

mongoでアップサートのデフォルト値を設定する方法。または、一意の5〜6文字の文字列を生成するより効率的な方法がありますか?

4

2 に答える 2

1

必ずしも連続していない一意の ID のみが必要な場合は、ObjectIdの最初の部分を使用できます。

上記のドキュメントから、次のような説明があります。

ObjectId は 12 バイトの BSON タイプで、以下を使用して構築されます。

a 4-byte timestamp,
a 3-byte machine identifier,
a 2-byte process id, and
a 3-byte counter, starting with a random value.

したがって、次のようにすることができます。

x = ObjectId().toString().subString(0,4)

このアプローチにはデータベース IO が含まれないため、パフォーマンスが向上します。その一意性をより確実にしたい場合は、カウンターの最後の 2 バイトを追加して 6 文字のものにします。

于 2013-02-28T04:07:22.163 に答える
0

MongoDBでこれを行う方法があります。

findAndModifyコマンドを使用すると、ここで探しているコンテキストで詳細に説明されます。

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

于 2013-02-28T00:19:34.793 に答える