1

我试图批量插入 100 个文档对象。我是否错误地使用了插入语句?

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

4

1 回答 1

3

我认为这就是这里正在发生的事情。

该对象doc被添加到postsList100 次。请记住,在列表中的所有这 100 个位置中,它都是同一个对象。

_id如果文档不存在,Mongo 会为文档创建一个属性。一旦它将这个属性放在列表的第一个BasicDBObject,列表中的每个其他条目都会被修改为相同的_id.

我相信因为这个_id属性对于列表中的所有条目都是相同的(就像一个主键),所以只有第一个条目被插入。

您可以通过将 的副本添加doc到列表来解决此问题。尝试这个:

for (int i = 0; i < 100; i++) {
    postsList.add((BasicDBObject) doc.copy());
}
于 2013-02-27T05:18:53.053 回答