29

次のコードがあります。

@RequestMapping(value = "/envinfo", method = RequestMethod.GET)
@ResponseBody
public Map getEnvInfo()
{
    BasicQuery basicQuery = new BasicQuery("{_id:'51a29f6413dc992c24e0283e'}", "{'envinfo':1, '_id': false }");
    Map envinfo= mongoTemplate.findOne(basicQuery, Map.class, "jvmInfo");
    return envinfo;
}

お気づきのとおり、コードは次のとおりです。

  1. MongoDB から JSON を取得します
  2. Mapオブジェクトに変換します
  3. 次に、Mapオブジェクトは、ブラウザーに返される前に Spring MongoData によって JSON に変換されます。

中間の変換手順を経ずに、MongoDb から生の json を直接返すことは可能ですか?

4

3 に答える 3

9

Oliver が指摘しているように、そのために Spring Data を使用できますが、MongoDB のより低レベルの Java ドライバーを使用することを好む場合と好まない場合があります。そのドライバーの使用方法については、MongoDB Java Driver 3.xまたはMongoDB Java Driver 2.xのドキュメントを参照してください。

基本的に、あなたがする必要があるのはこれです:

MongoDB Java ドライバー 3.x

MongoClient mongoClient = new MongoClient();
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection coll = db.getCollection("testCollection");    
BasicDBObject query = new BasicDBObject("_id", "51a29f6413dc992c24e0283e");

try (MongoCursor<Document> cursor = collection.find(query).iterator()) {
    while(cursor.hasNext()) {
        System.out.println(cursor.next());
    }
}

MongoDB Java ドライバー 2.x

MongoClient mongoClient = new MongoClient();
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("testCollection");    
BasicDBObject query = new BasicDBObject("_id", "51a29f6413dc992c24e0283e");

try (DBCursor cursor = coll.find(query)) {
    while(cursor.hasNext()) {
        System.out.println(cursor.next());
    }
}

_idこれにより、値を持つフィールドを持つコレクション内のすべてのドキュメントが出力されます51a29f6413dc992c24e0283e

于 2013-08-19T00:34:06.663 に答える