0

車のリスト { car​​1, car2, car3 } があり、各車には少なくとも 2 つ以上のフィールドがあります。リストは BasicDBList に変換されます。例はこちら

DBObject saveObject = new BasicDBObject().append("$push", dbBasicListOfCars);
collection.(car).save(saveObject);

リストを独自のコレクションに保存できず、フィールドを「$」記号で開始できないと不平を言います。

リスト全体をコレクションにプッシュするにはどうすればよいですか? それとも、個々の車をコレクションに保存する必要がありますか?

4

1 に答える 1

1
new BasicDBObject().append("$push", dbBasicListOfCars);

上記のステートメントでは、キーを「$push」、値を dbBasicListOfCars としてDBObjectにキーと値のペアを挿入しようとしています。MongoDB ではキーに「$」を使用できないため、失敗しています。

ただし、保存しようとしている方法も間違っています。

必要なのは、com.mongodb.BasicDBList です。これは、配列 DBObject を作成できるユーティリティ クラスです。BasicDBList は数字キーのみをサポートします。int に変換できない文字列を渡すと、IllegalArgumentException が発生します。

 BasicDBList list = new BasicDBList();
 list.put("1", "bar"); // ok
 list.put("1E1", "bar"); // throws exception

参照: http://api.mongodb.org/java/current/com/mongodb/BasicDBList.html

注: MongoDB は、java.util.Lists からも配列を作成します。

DBObject obj = new BasicDBList();
 obj.put( "0", value1 );
 obj.put( "4", value2 );
 obj.put( 2, value3 );

これは、DBObject { "0" : value1, "1" : null, "2" : value3, "3" : null, "4" : value2 } を作成して、配列 [ value1, null, value3, null, value2 ] をシミュレートします。 .

于 2012-12-08T06:21:50.260 に答える