使用java在mongodb中自动增加序列 [英] Auto increment sequence in mongodb using java
问题描述
您好我想使用java在mongodb中自动增加 _id
。我对此完全陌生。在文档中我找到了这样的解决方案:
Hi I want to auto increment _id
in mongodb using java. I am completely new to this. In the document I found the solution like this:
db.counters.insert(
{
_id: "userid",
seq: 0
}
)
function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);
return ret.seq;
}
db.users.insert(
{
_id: getNextSequence("userid"),
name: "Sarah C."
}
)
任何人都可以建议如何使用java执行此操作?我对此完全陌生。
Can any one suggest how do I do this using java ? I am completely new to this.
推荐答案
使用创建一个自动递增序列字段首先你应该使用mongoDB shell创建集合,集合应该是:
Using Create an Auto-Incrementing Sequence Field first you should create collection using mongoDB shell and collection should be as :
db.counters.insert(
{
_id: "userid",
seq: 0
})
所以你得到计数器
集合哪个包含像 _id,seq
这样的字段,现在在java中创建 getNextSequence
函数,这个函数有参数 userid
as string getNextSequence
这样的函数:
So you get counters
collections which contains field like _id,seq
, now create getNextSequence
function in java and this function having parameter userid
as string so getNextSequence
function like this :
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
方法中使用此函数,如:
The above function return seq
count and used this function in main
method as like :
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
}
现在计数器
集合包含三个文件,其中包含 name
分别为 Sarah C.和Bob D。
,一个默认值我们第一次手动插入的文件,它增加 seq
就像这样 {_ id:userid,seq:2}
Now in counters
collection contains three documents which contains name
as Sarah C. and Bob D.
respectively and one default documents which we inserted manually at first time and it increment seq
like this { "_id" : "userid", "seq" : 2 }
这篇关于使用java在mongodb中自动增加序列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!