0

对于给定的 JSON,我如何获取 _id 以将其用作插入另一个 JSON 的 id?

尝试获取如下所示的 ID,但没有返回正确的结果。

private def getModelRunId(): List[String] = {
  val resultsCursor: List[DBObject] =
    modelRunResultsCollection.find(MongoDBObject.empty, MongoDBObject(FIELD_ID -> 1)).toList
  println("resultsCursor >>>>>>>>>>>>>>>>>> " +  resultsCursor)
  resultsCursor.map(x => (Json.parse(x.toString()) \ FIELD_ID).asOpt[String]).flatten
}
{
"_id": ObjectId("5269723bd516ec3a69f3639e"),
"modelRunId": ObjectId("5269723ad516ec3a69f3639d"),
"results": [
{
  "ClaimId": "526971f5b5b8b9148404623a",
  "pricingResult": {
    "TxId": 0,
    "ClaimId": "Large_Batch_1",
    "Errors": [

    ],
    "Disposition": [
      {
        "GroupId": 1,
        "PriceAmt": 20,
        "Status": "Priced Successfully",
        "ReasonCode": 0,
        "Reason": "RmbModel(PAM_DC_1):ProgramNode(Validation CPG):ServiceGroupNode(Medical Services):RmbTerm(RT)",
        "PricingMethodologyId": 2,
        "Lines": [
          {
            "Id": 1
          }
        ]
      }
    ]
  }
},
4

2 回答 2

3

如果你想找到 objectId 的:

import com.mongodb.casbah.Imports._ 
collection.find(MongoDBObject(/*query*/)).map(_._id)

如果要按id查询:

collection.findOneByID(/*id*/)
于 2013-10-31T16:41:34.543 回答
2

我想你正在使用 Casbah,Scala 的官方驱动程序。

您只需要修改地图功能:

resultsCursor.map { x => x.as[org.bson.types.ObjectId](FIELD_ID)}

Casbah 将 BSON 反序列化为 Scala 对象,因此您不必自己动手!

于 2013-10-31T13:38:45.757 回答