如何从Java中的mongo连接器返回xml?

时间:2019-01-01 17:02:56

标签: java mongodb rest api

我正在编写RESTful Web服务,在其中我想使用Mongo Connector在Mongo中执行查询后返回XML。

我已经搜索了很多,但没有在线找到任何好的教程。需要帮助XD

public class MongoConnector {
    private MongoClient mongoClient;

    public MongoConnector(){
        //TODO: Parameterizar connection string
        mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
    }

    public String getData(String databaseName, String collectionName, String field, String value){
        MongoDatabase database = mongoClient.getDatabase(databaseName);//"restaurantsDB"
        MongoCollection<Document> collection = database.getCollection(collectionName);//"restaurants"
        Bson filter = eq(field, value);//borough, bronx

        return StreamSupport.stream(collection.find(filter).limit(10).spliterator(), false)
                .map(Document::toJson)
                .collect(Collectors.joining(", ", "[", "]")).toString();
    }

    public String aggregateDataByQueryString(String databaseName, String collectionName, String query){
        MongoDatabase database = mongoClient.getDatabase(databaseName);//"restaurantsDB"
        MongoCollection<Document> collection = database.getCollection(collectionName);//"restaurants"
        BasicDBObject q = BasicDBObject.parse(query);
        //Mapear o resultado para um array em JSON
        return StreamSupport.stream(collection.aggregate(Arrays.asList(q)).spliterator(), false)
                .map(Document::toJson)
                .collect(Collectors.joining(", ", "[", "]")).toString();
    }
}

1 个答案:

答案 0 :(得分:0)

我检查了一下MongoDB文档,并在互联网上稍作戳了一下,但是我找不到在API本身中定义的可以执行任务的任何内容。话虽如此,这里仍然有一些选项可以为您服务:

  1. 由于org.bson.Document实现了java.util.Map,因此您可以将How to convert XML to java.util.Map and vice versa视为潜在的解决方案。
  2. 由于要在返回文档之前将文档映射到JSON字符串,因此可以尝试使用Converting JSON to XML in Java作为另一种可能的解决方案。

我对MongoDB不太熟悉,但是我相信这些解决方案将起作用,因为Document对象是“文档表示为Map的表示形式”,并且可以干净地converted to a JSON字符串