Java Apache Spark和MongoDb日期问题
我正在尝试使用ApacheSpark根据日期范围从mongo提取数据 我的目标是Java Apache Spark和MongoDb日期问题,java,mongodb,date,apache-spark,Java,Mongodb,Date,Apache Spark,我正在尝试使用ApacheSpark根据日期范围从mongo提取数据 我的目标是 ObjectId("56a3c6a80000000000000000") 使用此objectId查询mongo时 db.myCollection.find({"_id":{"$gt":ObjectId("56a3c6a80000000000000000")}}).sort({_id:-1}).count(); 我得到了结果 2685088 我用计算机把它转换成时间 ObjectId("56a3c6a80
ObjectId("56a3c6a80000000000000000")
使用此objectId查询mongo时
db.myCollection.find({"_id":{"$gt":ObjectId("56a3c6a80000000000000000")}}).sort({_id:-1}).count();
我得到了结果
2685088
我用计算机把它转换成时间
ObjectId("56a3c6a80000000000000000").getTimestamp().getTime()
结果如何
1453573800000
现在我的apachespark查询是
config.set("mongo.input.query","{\"_id\": {\"$gt\": {\"$date\": 1453573800000}}}");
当我使用spark java代码执行此操作时,在控制台上,我可以看到
query={ "_id" : { "$gt" : { "$date" : "2016-01-23T18:30:00.000Z"}}}
但spark并没有给出任何结果,它正在执行整个mongo
更准确地说,我希望类似于mongo语句的东西在spark中执行
db.collection.find({_id:{$gt: ObjectId(Math.floor((new Date('2016/1/22'))/1000).toString(16) + "0000000000000000"),
$lt: ObjectId(Math.floor((new Date('2016/1/23'))/1000).toString(16) + "0000000000000000")}})
我找到了类似的课程
我不确定它是否也起作用。你说的“它也在执行整个mongo”是什么意思?它正在搜索整个mongodb,而不是日期更大的“2016-01-23”