java mongodb sort()和limit()函数

时间:2014-01-03 04:30:49

标签: java mongodb sorting

我想为每个JSP页面(每页100个项目)排序返回的结果,而不是全局排序。

   DBObject sort = new BasicDBObject();
   DBObject exist = new BasicDBObject();
   DBObject query= new BasicDBObject();
   exist.put("$exists",1);
   query.put("sortKey":exist);//sortKey is not indexed
   sort.put("sortKey",1);
    DBCursor cursor = dbcollection.find(query).limit(100).sort(sort);
    while(cursor.hasNext()){
    System.out.println(cursor.next());
    }

但事实上,对于集合中的所有文档,排序是平滑的处理,即,即使我使用函数限制(100),它也是全局排序。由于集合是非常大规模的,排序函数将需要相当长的时间。所以,我想知道mongodb java驱动程序是否具有执行本地的功能(只对返回的100个文档进行排序)而不是全局排序?

2 个答案:

答案 0 :(得分:3)

通过使用Mongodb 3.x和相应的java驱动程序,您可以通过执行以下操作进行排序:

  class MyDatabase
  {
      bool isAvailable(const std::string& key)
      {
         // *compare*  key in database
         if (key == "Ü")
           return true;
         else
           return false;
      }
  }

用法排序为: 排序(顺序( “场”));

订单=升序或降序

答案 1 :(得分:1)

无法在Java驱动程序中进行本地排序。如果需要本地排序,请将文档读入数组并对数组进行排序。