Sha*_*Ali 8 java mongodb mongodb-query
嗨,我想_id使用java在mongodb中自动增加.我对此完全陌生.在文档中,我找到了这样的解决方案:
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."
}
)
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我如何使用java做到这一点?我对此完全陌生.
Yog*_*esh 10
首先使用创建自动递增序列字段,您应该使用mongoDB shell创建集合,集合应为:
db.counters.insert(
{
_id: "userid",
seq: 0
})
Run Code Online (Sandbox Code Playgroud)
所以你得到counters包含字段的集合_id,seq,现在getNextSequence在java中创建函数,这个函数有参数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");
Run Code Online (Sandbox Code Playgroud)
}
上面的函数返回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
}
Run Code Online (Sandbox Code Playgroud)
现在,在counters集合包含其中包含三个文件name为Sarah C. and Bob D.我们手动插入第一次分别与一个默认文档,并将其增加seq这样的{ "_id" : "userid", "seq" : 2 }
| 归档时间: |
|
| 查看次数: |
10753 次 |
| 最近记录: |