2014-09-21 5 views
0

나는 MongoDB와 MongoJack을 처음으로 사용했다.MongoDB - MongoJack 찾아서 제거

나는이 컬렉션

{ 
      "_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 
        }, 
} 

pbf라는이 무엇 나는 이런 식으로 뭔가 시도

을 "제거하고 ID로 하나 개 CIVS 항목을 반환"할 :

protected static JacksonDBCollection<PBF, String> pbfCollection; 

    BasicDBObject field = new BasicDBObject(); 
    field.put("civs", 1); 
    field.put("_id", "541ea72044ae1b4043e9ccba"); 
    PBF pbf = pbfCollection.findAndRemove(field) 

을 그러나 이것은 아무 것도 찾지 못한다는 예외를 throw합니다.

근본적으로 나는 이것을 돌려주고 싶다.

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

일했다,하지만 난 그것을

을 그것을하는 더 나은 방법이 있어야한다고 생각합니다