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);

Это сработало, но я думаю, что это должен быть лучший способ сделать это

Другие вопросы по тегам