2

我有List复杂对象,复杂对象包含两个以上的字段。像 -{car1, car2, car3}和汽车有名称和类型字段

有没有更简单的插入汽车列表的方法?就像是

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

我试过了$pushAll,它似乎不起作用。我做了更多的研究,发现它需要有关映射的信息,这就是插入失败的原因之一。

将此插入 MongoDB 的最佳方法是什么?一些示例代码或方向会有所帮助。请注意,这必须通过 Java 完成。

4

1 回答 1

3

好吧,如果您不想手动将汽车对象转换为 DBObjects,那么可以使用 Mapping Frameworks。像吗啡

就个人而言,我只是手动连接映射方法。代码可能看起来像这样(未经测试,可能会出现拼写错误)

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 回答