2

複雑なオブジェクトがListあり、複雑なオブジェクトには3つ以上のフィールドが含まれています。-のようなもの{car1, car2, car3}で、車には名前とタイプのフィールドがあります

車のリストを挿入する簡単な方法はありますか?何かのようなもの

DBObject updateObject = new BasicDBObject().append("$push", new BasicDBObject().append("cars", cars)

試してみましたが$pushAll、うまくいかないようです。もう少し調べてみたところ、マッピングに関する情報が必要であることがわかりました。これが、この挿入が失敗する理由の1つです。

このMongoDBへの挿入を行うための最良の方法は何ですか?いくつかのサンプルコードまたは方向性が役立ちます。これはJavaを介して実行する必要があることに注意してください。

4

1 に答える 1

3

車のオブジェクトを手動でDBObjectsに変換したくない場合は、マッピングフレームワークがあります。モルヒネのように。

個人的には、マッピングメソッドを手動で接続するだけです。コードは次のようになります(テストされていない、タイプミスが予想されます)

BasicDBObject updateObject = new BasicDBObject();
BasicDBList dbCarList = mapCars(cars);
updateObject.append("$push", new BasicDBObject("cars", dbCarList));

...
private BasicDBList mapCars(List<Car> cars) {
  BasicDBList result = new BasicDBList();
  for (Car car: cars) {
    BasicDBObject dbCar = new BasicDBObject();
    dbCar.append("name", car.getName());
    result.add(dbCar);
  }

  return result;
}

更新:Sammayeがコメントで指摘したように、リストを置き換えるために$pushを$setに置き換えます。$ pushは、以前のフォームを削除せずに、存在しない要素を配列に追加します。

于 2012-12-07T09:25:35.167 に答える