2013-07-17 18 views
1

我有一些测试数据,我使用Java mongodb客户端进行查询。我只是熟悉这个平台,并且已经成功地运行了一些基本的查询。如何在特定的json布局中返回mongodb?

public class returnJSON { 

    public static void main(String[] args) { 

     try { 
      MongoClient mongoClient = new MongoClient("localhost", 27017); 
      DB db = mongoClient.getDB("test"); 

      DBCollection table = db.getCollection("zips"); 

      BasicDBObject searchQuery = new BasicDBObject(); 
      searchQuery.put("pop", new BasicDBObject("$gt", 25000).append("$lt", 26000)); 

      DBCursor cursor = table.find(searchQuery); 

      while (cursor.hasNext()) { 
       System.out.println(cursor.next()); 
      } 
      cursor.close(); 

     } catch (UnknownHostException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

不过,我希望做的是把标准输出的Java客户端给了我..

{ 
    "city": "HUNTSVILLE", 
    "loc": [ 
     -86.567318, 
     34.726866 
    ], 
    "pop": 25513, 
    "state": "AL", 
    "_id": "35801" 
} 
{ 
    "city": "MONTGOMERY", 
    "loc": [ 
     -86.243394, 
     32.383443 
    ], 
    "pop": 25282, 
    "state": "AL", 
    "_id": "36109" 
} 

逼到我需要的比特,即

{ 
    "city" : "HUNTSVILLE" , 
    "pop" : 25513 
} 

{ 
    "city" : "MONTGOMERY" , 
    "pop" : 25282 
} 

我已经看到了关于BSON和MongoJack的一些情况,但我不太确定这些是否是我需要的。

该计划是为了让我最终通过REST服务提供这些信息,但这是以后的另一个问题。

很多谢谢。

回答

1

OK,所以一些挖后,我发现,我需要的是这个......

BasicDBObject searchQuery = new BasicDBObject(); 
    BasicDBObject fields = new BasicDBObject(); 

    searchQuery.put("pop", new BasicBSONObject("$gt", 25000).append("$lt", 25100)); 
    fields.put("city", 1); 
    fields.put("pop", 1); 
    fields.put("_id", 0); 

    DBCursor cursor = table.find(searchQuery, fields); 

这回...

{ “城市”: “奥德堡”,“流行“:25009} {”city“:”LAKEWOOD“,”pop“:25008}

这正是我所需要的。

相关问题