1

我正在使用 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);

在此之后没有在 DB 中进行更新。

4

1 回答 1

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"}
于 2013-08-21T02:53:40.653 回答