Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入ArrayList mongodb_Java_Mongodb - Fatal编程技术网

Java 插入ArrayList mongodb

Java 插入ArrayList mongodb,java,mongodb,Java,Mongodb,我正在尝试批量插入100个文档对象。我是否错误地使用了insert语句 Mongo mongoClient = new Mongo( "localhost" , 27017 ); DB db = mongoClient.getDB( "user" ); DBCollection coll = db.getCollection("test"); BasicDBObject doc = new BasicDBObject("userName","James").app

我正在尝试批量插入100个文档对象。我是否错误地使用了insert语句

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);
Mongo-mongoClient=new-Mongo(“localhost”,27017);
DB=mongoClient.getDB(“用户”);
DBCollection coll=db.getCollection(“测试”);
BasicDBObject doc=新的BasicDBObject(“用户名”、“詹姆斯”).append(“随机数1”、“feeof”).append(“随机数2”、“ofeifefe”);
List postsList=new ArrayList();
对于(int i=0;i!=100;i++)
{
postsList.add(doc);
}
coll.insert(postsList);

它没有插入任何内容,当我检查最后一行时,它将值显示为N/A。

我认为这就是这里发生的情况

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

Mongo为文档创建一个
\u id
属性,如果它还没有。一旦它将此属性放入列表中的第一个
basicdboObject
,列表中的每个其他条目都会使用相同的
\u id
进行修改

我相信,因为这个
\u id
属性对于列表中的所有条目(类似于主键)都是相同的,所以只会插入第一个条目

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

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

如何检查它没有插入任何内容?控制台中的db.test.count()您可能找不到正确的数据库。在查看计数之前,您是否执行了
usedb user
?edit*Yes检查了这一点,并不是因为这一点。很抱歉,应该是
use user