簡體   English   中英

如何在mongo db中自動增加非數字ID

[英]How to auto-increment non-numeric ID in mongo db

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

您對要自動遞增的內容的解釋與代碼不匹配,請不要理會錯誤。 您的代碼正在嘗試在由Project_ID鍵控的文檔(本例為demo_1自動遞增seq 盡管沒有錯誤,但我運行了您的代碼,很可能您沒有“種子”記錄來查找AndAndModify()。 嘗試運行以下命令創建您的種子:

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

然后運行您的代碼。 另外:您將在每次調用getNextSequence連接和關閉連接。 那真的很慢。 我建議您打開數據庫並在main()捕獲集合,然后在退出時將其關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM