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

查看:453
本文介绍了使用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
})

所以你得到计数器集合哪个包含像 _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屋!

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