MongoDB搜索大数据集

时间:2017-01-30 18:28:12

标签: java mongodb

我正在尝试搜索对象的大数据集合(1 000 000 000个元素)。 示例元素如下所示:

Document{{_id=588e6f317367651f34a06c2c, busId=34, time=1262305558050, createdDate=Sun Jan 29 23:39:42 CET 2017}}

从0到300有busIds,每条记录的时间增量约为30毫秒,从

开始

SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); long startDate = sdf.parse("2010.01.01 00:00:00").getTime();

现在我正在寻找这个查询的所有数据:

    BasicDBObject gtQuery = new BasicDBObject();
    List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
    obj.add(new BasicDBObject("busId", vehicleId));
    obj.add(new BasicDBObject("time", new BasicDBObject("$gt", startDate.getTime()).append("$lt", endDate.getTime())));
    gtQuery.put("$and", obj);
    System.out.println(gtQuery.toString());
    FindIterable<Document> curs = collection.find(gtQuery);

gtQuery输出:

{ "$and" : [ { "busId" : "34"} , { "time" : { "$gt" : 1262304705000 , "$lt" : 1262308305000}}]}

查询正在运行,但通过这种方式,它会迭代整个集合中的1 000 000个元素。 有没有办法更快地完成它?

1 个答案:

答案 0 :(得分:1)

尝试按照@ares

的建议在busId和时间上创建compound index