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 に答える