2015-12-08 43 views
0

我是MongoDb的新手。我正尝试使用java在MongoDb中插入数据。一切工作正常,但当我尝试使用insert()函数插入数据错误显示。它说文件更改类型为DBObject[]无法使用java插入到MongoDB中

Database.java

package database; 

import com.mongodb.BasicDBObject; 
import com.mongodb.BasicDBObjectBuilder; 
import com.mongodb.DB; 
import com.mongodb.MongoClient; 
import com.mongodb.DBCollection; 
import com.mongodb.DBCursor; 
import com.mongodb.DBObject; 
import com.mongodb.Mongo; 
import com.mongodb.MongoException; 
public class Database 
{ 

    public static void main(String args[]) 
    { 
     MongoClient mongo= new MongoClient("localhost",80); 
     DB db = mongo.getDB("Collection"); 
     DBCollection group=db.getCollection("Group"); 
     BasicDBObject documents= new BasicDBObject(); 
     documents.put("saf", "ad"); 

     group.insert(documents);//error is shown here 
    } 
} 
+0

请复制并粘贴您得到的确切错误消息。它包含有关错误的重要信息。 – Jesper

+0

它只是说文档changetype到DBObject []。 –

+1

你使用的是什么版本的MongoClient?看起来你正在使用一个旧版本,它还没有带有可变参数的'insert'方法。使用更新版本的MongoClient。 – Jesper

回答

3

BasicDBObject作为DBOBJECT的子集。同样为了保存BasicDBObject,我们有一个调用作为保存方法

group.save(documents); 
+1

转换不是必需的,因为'BasicDBObject'是'DBObject'的子类型。 – Jesper

+0

我的错我已经更新了我的代码,我们也可以保存BasicDBObject。因为有一种方法 –

0

您的代码是正确的,并按原样运行。 只需从现有的mongo-java驱动程序更新到版本2.13.0即可。 下载链接:

JavaDriver2.13

或: All Mongo Drivers

+0

它doesnot工作 –

+0

它说要更改为DBObject [] –

+0

我试着运行你的代码作为junit测试,它很好,只是添加抛出UnknownHostException的方法.. –

0

您正在使用DBCollection .insert()

public WriteResult insert(DBObject... arr) 
        throws MongoException 
Saves document(s) to the database. if doc doesn't have an _id, one will be added you can get the _id that was added from doc after the insert 
Parameters: 
arr - array of documents to save 
Throws: 
MongoException 

检查JavaDoc for insert。这期待一个DBObject数组。

这就是为什么错误:

change type of documents to DBObject[]

正如@Vivek提到的,你可以使用.save()方法:

public final WriteResult save(DBObject jo) 
Saves an object to this collection. 
Parameters: 
jo - the DBObject to save will add _id field to jo if needed 

检查Javadoc for save