2016-12-21 6 views
0

私のコレクションは、このようなドキュメントが含まれていますオブジェクトから値を取得します

{ 
    "_id": ObjectId("585a7886e4b06aec5d1d1639"), 
    "name": "somename", 
    "owner": "someowner", 
    "slots": 50, 
    "gold": 0, 
    "tag": "sometext", 
    "motd": "sometext", 
    "purchases": [], 
    "members": { 
     "membername1": { 
      "rank": 2 
     }, 
     "membername2": { 
      "rank": 5 
     }, 
     "membername3": { 
      "rank": 3 
     } 
    } 
} 

私は「members.membername.rank」からint値を取得する必要があります。 この値はどのようにして得られますか?membernameのみを知っていますか?

+0

のためだけrankを取得します。メンバはメンバーのようなリストでなければなりません:{{"membername": "name"、 "rank":3}、{"membername": "name2"、 "rank":5}] 'これは正解で、はるかに簡単になります –

+0

ok、今のような構造を持っています"members" : [ { "membername" : "name", "rank" : 3 }, { "membername" : "name2", "rank" : 5 } ]どうすればこの値を取得できますか? –

+0

あなたは間違いなくreasearchをやって、始めてみるべきです。 'find'と' eq'で作業することができます - http://mongodb.github.io/mongo-java-driver/3.4/driver/getting-started/quick-start/ –

答えて

0

次のコードでは、文書のIDを除外して、データ構造が間違っている私見memername1

List<Document> pipeline = Arrays.asList(new Document("$project", new Document("rank", "$members.membername1.rank").append("_id", false))); 
return ApiResponse.withBody(coll.aggregate(pipeline).first().getInteger("rank")); 
関連する問題