[英]Auto increment sequence in mongodb using java
嗨,我想使用java在mongodb中自動增加_id
。 我對此完全陌生。 在文檔中,我找到了這樣的解決方案:
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做到這一點? 我對此完全陌生。
首先使用創建自動遞增序列字段,您應該使用mongoDB shell創建集合,集合應該如下:
db.counters.insert(
{
_id: "userid",
seq: 0
})
所以你得到的counters
集合包含像_id,seq
這樣的字段,現在在java中創建getNextSequence
函數,這個函數將參數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
集合中包含三個文件,其中包含Sarah C. and Bob D.
name
, Sarah C. and Bob D.
我們第一次手動插入的一個默認文檔,它增加seq
如{ "_id" : "userid", "seq" : 2 }
DBCollection collection = database.getCollection("Table Name");
DBObject modifier = new BasicDBObject("counter", 1);
DBObject incQuery = new BasicDBObject("$id", modifier);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.