【问题标题】:Persisting JSON response using Mongo DB使用 Mongodb 持久化 JSON 响应
【发布时间】:2014-06-05 08:45:35
【问题描述】:

有很多关于如何将 GORM 对象持久化到 MongoDB 的教程,例如http://blog.mongodb.org/post/18510469058/grails-in-the-land-of-mongodb。就我而言,我从一台服务器到另一台服务器的请求中获取 HTTP 响应。我不知道 JSON 响应的确切形状,但对大部分结构有很好的了解。

假设我正在获取医生列表,我知道医生的结构。每个医生都有一份病人名单,但我不知道每个病人的确切结构。

一位患者可能是:

patient : {
    name: "tony",
    lastIllness: "flu"
}

而另一个可能是:

patient : {
   name: "peter",
   phoneNumber: "08678762"
}

我的目标是将 JSON 响应与我从 HTTP 请求获取到 MongoDB 时的状态完全相同,并使其用户友好,这意味着能够为不同的患者/医生运行不同的查询。

我能做到:

class Doctor {
    List<Patient> patients
    static embedded = ['patients']
}

class Patient {
    // holds dynamic attributes
}

我可以手动解析 JSON 并通过执行以下操作动态创建各种 Patient 属性:

patient[$attributeName]=attributeValue

这会起作用,但我可以看到解析变得越来越复杂和错误。请记住,我希望从 HTTP 请求返回的 JSON 被逐字保留,并且我希望这个 JSON 可用于查询。

有没有更好的办法?

【问题讨论】:

    标签: mongodb grails grails-orm grails-plugin


    【解决方案1】:

    我有一个稍微类似的案例。我使用 Grails 创建了一个 Restful API,客户希望将每个请求与 MongoDB 中的所有参数一起存储到 API,以便能够提取使用信息。

    我创建了以下域类:

    class ApiStatistic {
    
        static mapWith = "mongo"
    
        ObjectId id
        ...
        Map parameters
        Date dateCreated
    

    }

    然后,在拦截所有请求的过滤器中,我异步调用一个接收请求参数的服务。这里有趣的属性是parameters,它是Map

    然后我要做的就是创建一个新的ApiStatistic 对象并将请求的参数分配给parameters 属性。 Map 以包含所有信息的 json 格式存储在 MongoDB 中。

    我认为通过这种方法,您可以在 MongoDB 中保留 JSON 响应而不会出现任何问题,只需在您的域类中使用 Map 属性。

    【讨论】:

      猜你喜欢
      • 2010-12-31
      • 2011-05-04
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 2017-04-09
      相关资源
      最近更新 更多