我正在使用Apache Camel 2.13.1和MongoDB 2.2.2.我有以下路线:
<route id="camel-route" autoStartup="true">
<from uri="file:/dir?move=${date:now:yyyyMMdd}\processed\${file:name}&moveFailed=${date:now:yyyyMMdd}\failed\${file:name}" />
<unmarshal>
<jaxb prettyPrint="false" contextPath="com.example.model" />
</unmarshal>
<to uri="mongodb:connectionBean?database=db&collection=coll&operation=save" />
</route>
Run Code Online (Sandbox Code Playgroud)
文件使用者端点获取XML文件并将其解组为POJO,该POJO包含数据类型为int,String和java.util.Date的多个字段.它保存/插入正常但日期字段保存为NumberLong类型,而不是类型ISODate.
但是如果我使用MongoDB Java驱动程序保存它(即创建DBObject,使用字段"new Date()"映射一个键),它将在MongoDB中保存为ISODate.我可以通过使用camel XML DSL来实现这一点吗?
编辑:深入研究代码和文档,camel-mongodb使用Jackson,首先将其转换为Map,然后转换为BasicDBObject.有没有办法在XML DSL中我可以配置杰克逊的行为?最后一种方法是编写自定义类型转换器.
我试图运行这个:
mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{'time':{'$gte': ISODate('2014-12-21 12:57:00.506Z'),'$lt': ISODate('2014-12-21 12:59:00.506Z')}}"
Run Code Online (Sandbox Code Playgroud)
或者这个(gte< without - '):
mongoexport.exe -h *MYHOST* -p *MYPORT* -q {'time':{$gte: ISODate('2014-12-21 12:57:00.506Z'),$lt: ISODate('2014-12-21 12:59:00.506Z')}}
Run Code Online (Sandbox Code Playgroud)
该查询在Robomongo上运行正常,但是使用mongoexport它会抛出:"太多的位置参数"
我知道我可以运行以下代码,但我不想每次需要执行查询时都使用日期转换器.
mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{'time':{$gte: new Date(14191
66620506),$lt: new Date(1419166740506)}}"
Run Code Online (Sandbox Code Playgroud) 我有一个函数,使用数据表显示我的数组中的对象.将日期和时间格式从ISODate更改为人类可读格式我有点问题.
MYDATA的
var datas = {“rows” : [{_id: "2017-01-03T00:00:00.000Z", Humidity: 24, Temperature: 18},
{_id: "2017-01-04T00:00:00.000Z", Humidity: 23.071428571428573, Temperature: 18.928571428571427} ]}
Run Code Online (Sandbox Code Playgroud)
JS脚本
var table = $('#myTable').DataTable( {
data: datas.rows,
"columns": [
{ data: "_id" },
{ data: "Temperature" },
{ data: "Humidity" }
]
});
Run Code Online (Sandbox Code Playgroud)
感谢您的预期帮助.
在这篇文章的时候我的当前时间2017-01-10T19:23:00.000Z
,但new Date()
给我的2017-01-11T00:23:19.521Z
未来我目前的时区的5小时。这会影响我的数据存储在MongoDB中的方式。我知道我可以将时间设置为5小时前
var datetime = new Date();
datetime.setHours(datetime.getHours()-5);
Run Code Online (Sandbox Code Playgroud)
但是我更喜欢一种更好的方法。我尝试使用此。我仍然有相同的时间。在代码的其他部分,我Tue Jan 10 2017 19:54:30 GMT-0500 (EST)
与初始时间有所不同。如果有人指出这里出了问题,我会很高兴。
我使用以下命令在Javascript程序中创建了几个ISO日期:
var isodate = new Date().toISOString()
以格式返回日期"2014-05-15T16:55:56.730Z"
.我需要从这些日期中减去5个小时.然后将上述日期格式化为"2014-05-15T11:55:56.730Z"
我知道这很hacky但非常感谢快速修复.
我正在尝试将JSON数据集从S3转换为Glue表架构,转换为Redshift频谱以进行数据分析。创建外部表时,如何转换DATE字段?
需要突出显示源数据来自ISODate格式的MongoDB。这是胶水表格格式。
struct $date:string
Run Code Online (Sandbox Code Playgroud)
在“外部”表中尝试了以下格式
startDate:struct<$date:varchar(40)>
startDate:struct<date:varchar(40)>
startDate:struct<date:timestamp>
Run Code Online (Sandbox Code Playgroud)
Redshift Spectrum或Glue中是否有解决ISODate格式的工作?还是建议返回源以转换ISOdate格式?
我丢失了 ISODate 对象的 MongoDb 接口的纳秒数。当我在 perl 中读取它们时,所有纳秒都设置为零。
首先是我的环境:
MongoDB version: 1.8.2
perl v5.12.4
MongoDB perl module version: 0.701.4
Run Code Online (Sandbox Code Playgroud)
我有一个 Mongo DB,其 rtcTime 编码为 ISODate,如下所示:
"rtcTime" : ISODate("2013-05-13T18:54:55.918Z")
Run Code Online (Sandbox Code Playgroud)
提取 rtcTime 的代码如下所示:
my @results = $db->get_collection( 'timings' )->find( )->all();
foreach my $record ( @results )
{
print $record->{rtcTime}->nanoseconds()."\n";
}
Run Code Online (Sandbox Code Playgroud)
输出全为 0。
要完全重现该问题,请在 MongoDB 数据库中创建一个具有任意(非零)hires_epoch 值的 ISODate 对象。然后尝试使用 MongoDB / DateTime / DateTime::Format::ISO8061 模块来提取任何类型的员工时间数据。
问:为什么我无法从 MongoDB ISODate 数据中获取毫秒、微秒或纳秒?
我有一个当前的Mongo数据库,其中包含累积的条目/字段
{
name: "Fred Flintstone",
age : 34,
timeStamp : NumberLong(14283454353543)
}
{
name: "Wilma Flintstone",
age : 33,
timeStamp : NumberLong(14283454359453)
}
Run Code Online (Sandbox Code Playgroud)
等等...
问题:我想将数据库中的所有条目转换为相应的ISODate - 如何做到这一点?
期望的结果:
{
name: "Fred Flintstone",
age : 34,
timeStamp : ISODate("2015-07-20T14:50:32.389Z")
}
{
name: "Wilma Flintstone",
age : 33,
timeStamp : ISODate("2015-07-20T14:50:32.389Z")
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情
>db.myCollection.find().forEach(function (document) {
document["timestamp"] = new Date(document["timestamp"])
//Not sure how to update this document from here
db.myCollection.update(document) //?
})
Run Code Online (Sandbox Code Playgroud) 我有如下 JSON 数据:我需要将该日期转换mongo_date
为 utc 时间戳,以根据时间线示例每年、每月、每周使用 map reduce 分析 hive 中的数据
{
"_id" : ObjectId("51ac77050e9edcdad271ce2d"),
"company" : null,
"date" : "19760224",
"mongo_date" : ISODate("1976-02-24T00:00:00Z")
Run Code Online (Sandbox Code Playgroud) 我一直在尝试将日期从javascript端保存为ISODate格式的MongoDB.但它只是以字符串格式保存MongoDB文档中的日期字段.
这是我发送到MongoDB中的对象,以保存为给定集合中的文档.
var currentDate = new Date();
postData = {
deviceID: deviceID,
companyID: companyID,
userID: userID,
date: currentDate
};
Run Code Online (Sandbox Code Playgroud)
一切正常,但日期字段只是以字符串格式保存.找不到任何可以为这个问题提供明确答案的问题,如果有问题,请指导我到正确的地方!