无法使用mongodb java驱动程序将文档插入集合

时间:2013-08-20 17:12:36

标签: java mongodb mongodb-java

我正在使用mongo mongo java驱动程序版本2.11.2。我想在我的dbin mongodb中插入一些文档,当我尝试从命令行执行它时,一切正常。但是当我使用mongo java驱动程序时,它无法正常工作。我正在使用BasicDBObject来填充文档。但collection.insert(BasicDBObject).getN()总是给我0。什么都没有插入到集合中。我在这里错过了什么吗?

添加代码:

mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("db");
DBCollection collection = db.getCollection("collection");
BasicDBObject o = new BasicDBObject();
o.put("key1", "value1");
o.put("key2", "value2");
collection.insert(o);

此后数据库中没有更新。

1 个答案:

答案 0 :(得分:2)

插入的getlasterror中的'n'值始终为零。 ('n'值是WriteResult.getN()返回的值。)

查看此MongoDB Jira票证:https://jira.mongodb.org/browse/SERVER-4381。已关闭,优先于新的插入,更新,删除机制:https://jira.mongodb.org/browse/SERVER-9038

长话短说。你没有生气或遗失任何东西。它是MongoDB的一个“特性”,希望最终能够在2.6版本中得到修复。

罗布。

编辑:

我稍微修改了你的例子来打印保存的文件。你能尝试在你的环境中运行这个版本吗?

import java.net.UnknownHostException;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.WriteConcern;

public class StackOverFlow {

    public static void main(String[] args) throws UnknownHostException {
        MongoClient mongo = new MongoClient("localhost:27017");
        DB db = mongo.getDB("db");
        DBCollection collection = db.getCollection("collection");
        BasicDBObject o = new BasicDBObject();
        o.put("key1", "value1");
        o.put("key2", "value2");
        collection.insert(WriteConcern.SAFE, o);

        for (DBObject doc : collection.find()) {
            System.out.println(doc);
        }
    }
}

在我的机器上输出:

{ "_id" : { "$oid" : "5235f98495302901eb70e7a4"} , "key1" : "value1" , "key2" : "value2"}