开发者社区> 问答> 正文

如何使用条件查询Spark MongoDB-Connector?

最近我尝试使用官方文档中的 MongoDB-Connector,
JavaMongoRDD rdd = MongoSpark.load(jsc);
但演示将加载我的集合中的所有数据,
我只想在我的java或scala代码中运行此命令
db.pointer.find({"inserttime":{$lt:new Date(2018,0,4,7,0,10),$gte:new Date(2018,0,4,7,0,0)}},{"inserttime":1,})

我知道我可以RDD.filter() 用来获取我想要的数据。

但它会在第一时间查询所有数据,这不是我想要的。

编辑:
它提供了条件查询的任何方法,以减少查询时的结果数据。

像JDBC一样:
find(and(eq("status", "A"),or(lt("qty", 30), regex("item", "^p"))));

展开
收起
社区小助手 2018-12-21 13:45:36 5081 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    该文档使用聚合来过滤数据库级别的数据,因此您也可以这样做。

    // the following example was not tested

    BasicDBObject query = new BasicDBObject("$lt", new Date(2018,0,4,7,0,10);
    query.put("$gte", new Date(2018,0,4,7,0,0));

    JavaMongoRDD aggregatedRdd = rdd.withPipeline(singletonList(query));

    2019-07-17 23:23:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
MongoDB多数据中心的方案选型之路 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载