如何在mongo db中自动增加非数字ID

时间:2017-09-30 06:56:00

标签: java mongodb rest

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

1 个答案:

答案 0 :(得分:1)

您对自动增量尝试的解释与代码不符,不要错误。您的代码正在尝试在Project_ID键入的文档中自动增加seq,在本例中为demo_1。 我运行了你的代码,虽然我没有错误,你可能没有"种子"记录到findAndModify()。尝试运行它来创建种子:

db.counters.drop();
db.counters.insert({_id: "demo_1", seq: NumberInt("0")});

然后运行你的代码。 另外:您通过每次调用getNextSequence来连接和关闭连接。那将是非常缓慢的。我建议您打开数据库并在main()中捕获集合并在退出时关闭它。