1

100個のドキュメントオブジェクトをバッチ挿入しようとしています。挿入ステートメントを間違って使用していますか?

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);

何も挿入されません。最後の行を調べると、値がN/Aと表示されます。

4

1 に答える 1

3

これがここで起こっていることだと思います。

オブジェクトdocpostsList100回追加されています。リスト内の100か所すべてで同じオブジェクトであることを忘れないでください。

Mongoは_id、ドキュメントがまだ存在しない場合、ドキュメントの属性を作成します。この属性をリストの最初BasicDBObjectに配置すると、リスト内の他のすべてのエントリが同じで変更され_idます。

この_id属性はリスト内のすべてのエントリ(主キーのようなもの)で同じであるため、最初のエントリのみが挿入されると思います。

リストにのコピーを追加することで、これを解決できますdoc。これを試して:

for (int i = 0; i < 100; i++) {
    postsList.add((BasicDBObject) doc.copy());
}
于 2013-02-27T05:18:53.053 に答える