Как добавить новое значение в список в mongodb?
Я хочу вставить новый элемент в массив "CarList" ниже. Я использую MongoDB и dropwizzard в моем проекте.
{
"_id": "56aa6119bf78f37eee64697e",
"name": "Jack",
"occupation": "business*emphasized text* owner",
"carList": [{
"brand": "Ford",
"cost": "$25000"
}, {
"brand": "Mazda",
"cost": "$23000 "
}]
}
Мои занятия по POJO:
public class CarOwners {
@ObjectId
public String _id;
public String name;
public String occupation;
public List<CarDetails> carList;
}
public class CarDetails
{
public String brand;
public String cost;
}
Мой код для добавления новой записи в carList:
CarDetails newCarInfo = new CarDetails();
newCarInfo.brand="Toyota";
newCarInfo.cost="$20000";
BasicDBObject ownerQuery = new BasicDBObject("name", "Jack");
carOwnerCollections.update(ownerQuery, new BasicDBObject("$addToSet", new BasicDBObject("carList",newCarInfo)));
Ошибка, которую я получаю:
org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class data.CarDetails] from JSON String; no single-String constructor/factory method (through reference chain: data.PropertyLedger["carList"])
По ошибке я могу догадаться, что проблема связана с подключением к классу CarDetails. Я не уверен, как решить это. Я посмотрел в обновлении вложенных документов в Mongo и аналогичных ссылок, но не смог найти ответ.
Любые указатели будут полезны. Спасибо.
1 ответ
Попробуйте сделать это с помощью $push
оператор для массивов в MongoDB.
BasicDBObject ownerQuery = new BasicDBObject("name", "Jack");
//Below code will insert the new object to the existing carList array
carOwnerCollections.update(ownerQuery, new BasicDBObject("$push", new BasicDBObject("carList",new BasicDBObject("brand","Toyota").append("cost","$20000"))));