2017-03-27 7 views
0

scala 용 Casbah를 사용하여 업데이트해야하는 MongoDB 문서가 있습니다. 내가 df.write 방법을 사용하여 위 문서를 삽입, 그래서 나는 dataframe을 만들 때 나는 데이터 유형과 스키마를 지정 할 수 있었다 성공적으로 지정된로 문서를 삽입 할 수 있었다 Casbah를 사용하여 MongoDB 문서를 업데이트하는 동안 데이터 유형을 지정하십시오.

{"_id": ObjectId("58d86364fbb1bb2224cab56a"), 
"record_interval": 
     [ 
      { 
      "record_time": ISODate("2017-01-26T09:22:15.000Z"), 
      "insert_time": ISODate("2017-03-26T12:57:08.610Z"), 
      "reading1": 50.0, 
      "reading2": 627.0 
      } 
     ], 
"record_id": "1234", 
"record_hour": ISODate("2017-01-26T09:00:00.000Z") 
} 

처럼 내 MongoDB의 문서 본다 데이터 유형.

이제 레코드 간격 배열 안에 개체를 추가해야합니다. 난 I는 이하의 코드를 사용하여 상기 문서의 record_interval 배열로 DBOBJECT 추가

{ 
    "vib_temp": "55.0", 
    "vib_voltage": "647.0", 
    "message_time": "2017-01-26 03:48:52.000000", 
    "etl_date_time": "2017-03-26 06:57:09.302000" 
} 

아래처럼 보이는 DBOBJECT

val DBobject: DBObject = JSON.parse(Json_String).asInstanceOf[DBObject] 

DBOBJECT로서 해석 JSON 문자열있다.

collection.update(MongoDBObject("_id" -> new ObjectId("58d86364fbb1bb2224cab56a")) 
    ,$push("record_interval" -> new MongoDBObject(DBobject))) 

내가 원하는 문서를 업데이트 할 수,하지만 요소의 데이터 유형은 insert_time, reading1 및 reading2 모든 문자열, record_time. 반면 적절한 데이터 형식으로 개체를 삽입하고 싶습니다. 문서를 업데이트하는 동안 데이터 유형을 어떻게 지정합니까? 미리 감사드립니다.

답변

0

삽입하려는 DBObject에 원하는 데이터 형식의 값이 있어야합니다.

다음은 나를 위해 일했다.

val Current_datetime = new DateTime() 
val message_time = new DateTime() 

collection.update(MongoDBObject("_id" -> new ObjectId("58d86364fbb1bb2224cab56a")) 
    ,$push("record_interval" -> new MongoDBObject(
        ,("vib_temp"->55.0) 
        ,("vib_voltage"->647.0) 
        ,("message_time"->message_time) 
        ,("etl_date_time"-> Current_datetime))))