我有大约1000万条记录的集合。因为它具有companyID和员工级别,所以它们都按升序编制索引。
当我将查询编写为db.collection.find("companyID":"XXX")
时,mongo会非常快地返回结果,但是当我对其应用排序时
db.collection.find("companyID":"XXX").sort({"empLevel":1})
它花了很多时间,因为那个companyID我们有100000条记录。
尽管两个字段都已编制索引,但它需要花费大量时间来处理并返回结果。请帮助解决这些问题......
答案 0 :(得分:1)
java中的解决方案
导入这些
import static com.mongodb.client.model.Sorts.*;
import static com.mongodb.client.model.Filters.*;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import org.bson.conversions.Bson;
代码
MongoCollection <Document> images = mongo.getCollection("nameofcollection");
Bson sort = descending("empLevel");
FindIterable<Document> iterdoc = album.find(eq("companyID",XXX)).sort(sort);