3

在使用 java api 的 mongodb 版本 3 中,我们如何在查询时给出提示查询结果是 FindIterable,它具有 MongoCursor。 我应该如何提示使用特定索引。

对于旧版本,DBCursor 有 API 用于提示。

4

2 回答 2

2

应该使用修饰符:

BasicDBObject index = new BasicDBObject("num", 1);
BasicDBObject hint = new BasicDBObject("$hint", index);
FindIterable<Document> iterable = collection.find().modifiers(hint);
于 2016-08-05T04:35:48.623 回答
1

您需要使用 FindIterable.modifiers 方法来指定 $hint:

private static void testHint(MongoDatabase db) {
    MongoCollection<Document> col = db.getCollection("Stores");
    FindIterable<Document> iterable = col.find(new Document("store","storenumbervalue"));
    iterable.modifiers(new Document("$hint","index_name"));
    MongoCursor curs =  iterable.iterator();
    while(curs.hasNext()){
        System.out.println(curs.next());
    }        
}

index_name - mongo 中的实际索引名称。

于 2016-07-07T15:43:14.100 回答