2014-09-21 64 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 
        }, 
} 

我想要做的「刪除並憑身份證返回一個的文明項」

我已經試過這樣的事情:

protected static JacksonDBCollection<PBF, String> pbfCollection; 

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

但是這只是拋出異常說它沒有找到任何東西

如此bascially我想這個返回

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

這個工作,但我覺得應該是這樣做

一個更好的方式