Укажите типы данных при обновлении документа MongoDB с помощью Casbah

У меня есть документ MongoDB, который мне нужно обновить с помощью Casbah для scala. Мой документ 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")
}

Я вставил указанный выше документ, используя методологию df.write, поэтому я смог указать схему с типами данных при создании фрейма данных и смог успешно вставить документ с указанными типами данных.

Теперь мне нужно добавить объект в массив интервалов записи. У меня есть строка JSON, которую я проанализировал как DBObject

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

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 в массив record_interval вышеупомянутого документа, используя приведенный ниже код.

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

Я могу обновить желаемый документ, но типы данных элементов record_time, insert_time, read1 и reading2 - это все строки. В то время как я хотел бы вставить объект с соответствующими типами данных. Как указать типы данных при обновлении документа? заранее спасибо


person Sid    schedule 27.03.2017    source источник


Ответы (1)


Я обнаружил, что объект 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))))
person Sid    schedule 07.05.2017