MongoDB - MongoJack найти и удалить
Я совершенно новичок в MongoDB и MongoJack.
У меня эта коллекция называется pbf
{
"_id" : ObjectId("541ea72044ae1b4043e9ccba"),
"name" : "First civ game",
"type" : "WAW",
"numOfPlayers" : 4,
"active" : true,
"players" : [ ],
"civs" : [
{
"objectType" : "civ",
"name" : "Indians",
"used" : false,
"hidden" : true
},
{
"objectType" : "civ",
"name" : "Arabs",
"used" : false,
"hidden" : true
},
{
"objectType" : "civ",
"name" : "Japanese",
"used" : false,
"hidden" : true
},
{
"objectType" : "civ",
"name" : "Egyptians",
"used" : false,
"hidden" : true
},
}
Что я хочу сделать "Удалить и вернуть один элемент цивилизации по Id"
Я пробовал что-то вроде этого:
protected static JacksonDBCollection<PBF, String> pbfCollection;
BasicDBObject field = new BasicDBObject();
field.put("civs", 1);
field.put("_id", "541ea72044ae1b4043e9ccba");
PBF pbf = pbfCollection.findAndRemove(field)
Но это просто исключение, сказав, что ничего не находит
Так что в основном я хочу, чтобы это вернулось
{
"objectType" : "civ",
"name" : "Indians",
"used" : false,
"hidden" : true
}
Как я могу сделать это?
1 ответ
Решение
Я решил это, используя два шага. Я уверен, что есть лучший способ сделать это.
//First get, then remove, then update
PBF pbf = pbfCollection.findOneById(pbfId);
Civ civ = pbf.getCivs().remove(0);
pbfCollection.updateById(pbf.getId(), pbf);
Это сработало, но я думаю, что это должен быть лучший способ сделать это