2013-02-27 165 views
0

我試圖批量插入100個doc對象。我是否錯誤地使用了插入語句?插入ArrayList mongodb

Mongo mongoClient = new Mongo("localhost" , 27017); 
    DB db = mongoClient.getDB("user");  
    DBCollection coll = db.getCollection("test"); 
    BasicDBObject doc = new BasicDBObject("userName","James").append("random1", "feeof").append("random2", "ofeijfefe"); 

    List<DBObject> postsList = new ArrayList<DBObject>(); 
    for (int i = 0; i != 100; i++) 
    { 

     postsList.add(doc); 
    } 

    coll.insert(postsList); 

它不插入任何東西,當我檢查的最後一行它顯示了價值N/A

+0

你怎麼檢查它沒有插入任何東西? – 2013-02-27 02:00:45

+0

控制檯中的db.test.count() – edited 2013-02-27 02:02:27

+0

您可能沒有在正確的數據庫中查找。您在查看計數之前執行過'usedb用戶'嗎? – 2013-02-27 02:05:22

回答

3

我認爲這是發生在這裏。

對象doc被添加到postsList 100次。請記住,它在列表中的所有100個位置都是同一個對象。

如果文檔不在那裏,Mongo會爲文檔創建一個_id屬性。一旦它將該屬性放在列表中的第一個BasicDBObject中,則列表中的每個其他條目都會使用相同的_id進行修改。

我相信因爲這個_id屬性對於列表中的所有條目是相同的(這就像主鍵),只有第一個條目被插入。

您可以通過將doc的副本添加到列表中來解決此問題。試試這個:

for (int i = 0; i < 100; i++) { 
    postsList.add((BasicDBObject) doc.copy()); 
} 
+0

100%正確謝謝! – edited 2013-02-27 05:20:55