問題描述:
{"$query":{"timestamp":{"$gt":new Date('2010/02/04 10:00:10')}}}
這樣的查詢陳述句在mongo中是可以查詢的,但是在kettle中是不能查詢的。
錯誤資訊如下:
2014/09/23 11:26:26 - Version checker - OK
2014/09/23 11:26:30 - E:\kettle_ktr\KETTLE_MONGODB\test.ktr : test - 為了轉換解除補丁開始 [E:\kettle_ktr\KETTLE_MONGODB\test.ktr : test]
2014/09/23 11:26:31 - MongoDB Input.0 - Configuring connection with read preference: primary
2014/09/23 11:26:31 - MongoDB Input.0 - No read preference tag sets defined
2014/09/23 11:26:31 - MongoDB Input.0 - Configuring connection with default write concern - w = 1, wTimeout: 0, journaled = false
2014/09/23 11:26:31 - MongoDB Input.0 - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : Unexpected error
2014/09/23 11:26:31 - MongoDB Input.0 - ERROR (version 5.0.1-stable, build 1 from 2013-11-15_16-08-58 by buildguy) : org.pentaho.di.core.exception.KettleException:
2014/09/23 11:26:31 - MongoDB Input.0 - Unexpected error
2014/09/23 11:26:31 - MongoDB Input.0 -
{"$query":{"timestamp":{"$gt":new Date('2010/02/04 10:00:10')}}}
^
2014/09/23 11:26:31 - MongoDB Input.0 -
2014/09/23 11:26:31 - MongoDB Input.0 - at org.pentaho.di.trans.steps.mongodbinput.MongoDbInput.processRow(MongoDbInput.java:156)
2014/09/23 11:26:31 - MongoDB Input.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:60)
2014/09/23 11:26:31 - MongoDB Input.0 - at java.lang.Thread.run(Thread.java:722)
2014/09/23 11:26:31 - MongoDB Input.0 - Caused by: com.mongodb.util.JSONParseException:
{"$query":{"timestamp":{"$gt":new Date('2010/02/04 10:00:10')}}}
^
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSONParser.read(JSON.java:272)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSONParser.parse(JSON.java:161)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSONParser.parseObject(JSON.java:231)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSONParser.parse(JSON.java:195)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSONParser.parseObject(JSON.java:231)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSONParser.parse(JSON.java:195)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSONParser.parseObject(JSON.java:231)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSONParser.parse(JSON.java:195)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSONParser.parse(JSON.java:145)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSON.parse(JSON.java:81)
2014/09/23 11:26:31 - MongoDB Input.0 - at com.mongodb.util.JSON.parse(JSON.java:66)
2014/09/23 11:26:31 - MongoDB Input.0 - at org.pentaho.di.trans.steps.mongodbinput.MongoDbInputData.jsonPipelineToDBObjectList(MongoDbInputData.java:1339)
2014/09/23 11:26:31 - MongoDB Input.0 - at org.pentaho.di.trans.steps.mongodbinput.MongoDbInput.initQuery(MongoDbInput.java:202)
2014/09/23 11:26:31 - MongoDB Input.0 - at org.pentaho.di.trans.steps.mongodbinput.MongoDbInput$1.run(MongoDbInput.java:95)
2014/09/23 11:26:31 - MongoDB Input.0 - at org.pentaho.di.trans.steps.mongodbinput.MongoDbInput$1.run(MongoDbInput.java:72)
2014/09/23 11:26:31 - MongoDB Input.0 - at org.pentaho.mongo.AuthContext.doAs(AuthContext.java:68)
2014/09/23 11:26:31 - MongoDB Input.0 - at org.pentaho.di.trans.steps.mongodbinput.MongoDbInput.processRow(MongoDbInput.java:72)
2014/09/23 11:26:31 - MongoDB Input.0 - ... 2 more
2014/09/23 11:26:31 - MongoDB Input.0 - 完成處理 (I=0, O=0, R=0, W=0, U=0, E=1
2014/09/23 11:26:31 - E:\kettle_ktr\KETTLE_MONGODB\test.ktr : test - E:\kettle_ktr\KETTLE_MONGODB\test.ktr : test
2014/09/23 11:26:31 - E:\kettle_ktr\KETTLE_MONGODB\test.ktr : test - E:\kettle_ktr\KETTLE_MONGODB\test.ktr : test
uj5u.com熱心網友回復:
想問kettle中為什么不能使用isodate型別???????????uj5u.com熱心網友回復:
樓主你好,由于我未使用過kettle,所以僅僅能從你提供的errorlog中來找尋問題。
通過你提供errorlog,我有找到這樣的JIRA
https://jira.mongodb.org/browse/JAVA-565
可以嘗試將秒與毫秒補全來試試看
The parser accepts these two date formats: seconds -> "yyyy-MM-dd'T'HH:mm:ss'Z'" or
seconds.milleseconds -> "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
uj5u.com熱心網友回復:
感謝版主的回答uj5u.com熱心網友回復:
客氣惹~
希望有所幫助吧。
uj5u.com熱心網友回復:
{ created_at : { $gte : { $date : "2014-12-31T00:00:00.000Z" } } }Finds all created_at documents that are greater than or equal to the specified UTC date
uj5u.com熱心網友回復:
