我想使用mongo DB自动增加'Project_ID'。我需要将'Project_ID'值设置为'demo_1',因此当我尝试自动递增此值时使用此值,它显示错误:无法递增非数字ID。
public static Object getNextSequence(String Project_ID) throws Exception{
// MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
// Now connect to your databases
// DB db = mongoClient.getDB("demo");
DB db=ConnectToDB.getConnection();
Properties prop = new Properties();
InputStream input = null;
input = Demo.class.getClassLoader().getResourceAsStream("config.properties");
prop.load(input);
String col=prop.getProperty("COLLECTION_DEMO");
DBCollection collection = db.getCollection("counters");
BasicDBObject find = new BasicDBObject();
find.put("_id", Project_ID);
BasicDBObject update = new BasicDBObject();
update.put("$inc", new BasicDBObject("seq", 1));
DBObject obj = collection.findAndModify(find, update);
db.getMongo().close();
return obj.get("seq");
}
Please let me know what is the issue there or what is the possible way to achieve this. Thanks.
答案 0 :(得分:1)
您对自动增量尝试的解释与代码不符,不要错误。您的代码正在尝试在Project_ID键入的文档中自动增加seq
,在本例中为demo_1
。
我运行了你的代码,虽然我没有错误,你可能没有"种子"记录到findAndModify()。尝试运行它来创建种子:
db.counters.drop();
db.counters.insert({_id: "demo_1", seq: NumberInt("0")});
然后运行你的代码。
另外:您通过每次调用getNextSequence
来连接和关闭连接。那将是非常缓慢的。我建议您打开数据库并在main()
中捕获集合并在退出时关闭它。