使用java在mongodb中自动递增序列 [英] Auto increment sequence in mongodb using java

查看:34
本文介绍了使用java在mongodb中自动递增序列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆