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
                    },
}

Что я хочу сделать "Удалить и вернуть один предмет цивилизованного мира по идентификатору"

Я пробовал что-то вроде этого:

    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
                    }

Как я могу это сделать?


person Shervin Asgari    schedule 21.09.2014    source источник


Ответы (1)


Я решил это, используя два шага. Я уверен, хотя есть лучший способ сделать это.

//First get, then remove, then update

PBF pbf = pbfCollection.findOneById(pbfId);
Civ civ = pbf.getCivs().remove(0);
pbfCollection.updateById(pbf.getId(), pbf);

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

person Shervin Asgari    schedule 21.09.2014