如何在特定的json布局中返回mongodb?

时间:2013-07-17 21:12:28

标签: json mongodb mongodb-java

我有一些测试数据,我正在使用Java 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 个答案:

答案 0 :(得分:1)

好的,经过一番挖掘,我发现我需要的就是这个......

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

这返回......

{“city”:“FORT ORD”,“pop”:25009} {“city”:“LAKEWOOD”,“pop”:25008}

这正是我所需要的。