使用 Casbah 更新 MongoDB 文档时指定数据类型
Specify datatypes while updating MongoDB document using Casbah
我有一个 MongoDB 文档需要使用 Casbah for 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、reading1 和 reading2 的数据类型都是字符串。而我想插入具有适当数据类型的对象。如何在更新文档时指定数据类型?提前致谢
我发现我尝试插入的 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))))
我有一个 MongoDB 文档需要使用 Casbah for 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、reading1 和 reading2 的数据类型都是字符串。而我想插入具有适当数据类型的对象。如何在更新文档时指定数据类型?提前致谢
我发现我尝试插入的 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))))