主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

MongoDBでオートインクリメントを・・・という話をほんの少し先まで

                
tags: C# mongoDB
MongoDBでドキュメントの任意のフィールドをオートインクリメントにしたい・・・というサンプルは本家にある。
https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field/

関数を使うわけだが、その時点で開いてるターミナルを閉じたらその関数は消える。なので永続化として下記のように保存、保存したものを呼び出して使える。
db.system.js.save({_id:'nextSeq',
value:function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
} );
return ret.seq;
}
});

db.system.js.findOne({_id:"nextSeq"}).value("userid");


C#ではストアしたJavaScriptはBsonJavaScriptとして取得できる。だけどどう実行するの・・・ドキュメントでもサンプルでも使用例が見つからない。なのでストアされたものを使わずに自分で書く。
var fooCollection = db.GetCollection("foo");
var d = new BsonDocument
{
{ "a", new BsonJavaScript("(function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
});
return ret.seq;
})('entry_id')")
}
};
fooCollection.InsertOne(d);
            

コメントの投稿

非公開コメント

プロフィール

h

Author:h

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon