2014-09-21 2 views
0

Я совершенно не знаком с 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 
        } 

Как это сделать?

ответ

0

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

//First get, then remove, then update 

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

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

Смежные вопросы