最初に自動インクリメントシーケンスフィールドの作成を使用して、mongoDBシェルを使用してコレクションを作成する必要があり、コレクションは次のようになります:
db.counters.insert(
{
_id: "userid",
seq: 0
})
したがって、counters
_id,seq
のようなフィールドを含むコレクション 、getNextSequence
を作成します Javaの関数と、パラメータuserid
を持つこの関数 文字列としてgetNextSequence
このように機能します:
public static Object getNextSequence(String name) throws Exception{
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// Now connect to your databases
DB db = mongoClient.getDB("demo");
DBCollection collection = db.getCollection("counters");
BasicDBObject find = new BasicDBObject();
find.put("_id", name);
BasicDBObject update = new BasicDBObject();
update.put("$inc", new BasicDBObject("seq", 1));
DBObject obj = collection.findAndModify(find, update);
return obj.get("seq");
}
上記の関数はseq
を返します main
でこの関数をカウントして使用しました 次のような方法:
public static void main(String[] args) throws Exception {
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// Now connect to your databases
DB db = mongoClient.getDB("demo");
DBCollection collection = db.getCollection("counters");
BasicDBObject document = new BasicDBObject();
document.put("_id", getNextSequence("userid"));
document.put("name","Sarah C.");
collection.insert(document); // insert first doc
document.put("_id", getNextSequence("userid"));
document.put("name", "Bob D.");
collection.insert(document); // insert second doc
}
今counters
コレクションには、name
を含む3つのドキュメントが含まれています Sarah C. and Bob D.
として それぞれ、最初に手動で挿入した1つのデフォルトのドキュメントで、seq
がインクリメントされます。 このように{ "_id" : "userid", "seq" : 2 }