使用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
})
所以你得到 counters
集合,其中包含像 _id,seq
这样的字段,现在在 java 中创建 getNextSequence
函数,这个函数有参数 userid
作为字符串,所以 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
count并在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
}
现在在 counters
集合中包含三个文档,其中包含 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屋!