синтаксис для использования "подсказка" в запросе агрегации монго в Java - PullRequest
0 голосов
/ 19 сентября 2018

HI мог бы любой помочь мне, как использовать «подсказку» в запросе агрегации Монго, сейчас я использую приведенный ниже код для запроса результатов.

AggregationOptions options = AggregationOptions.builder().allowDiskUse(allowDiskUse).build();
        DBCollection dbCollection = db.getPrimativeCollection(colName);           
        Cursor cursor = dbCollection.aggregate(aggregateList, options,
                Config.getInstance().getReadPreferenceEntity(colName));

для запроса поиска я могу использовать какниже,

DBCursor cursor = collection.find(query, projection).hint(hintName).comment(ThreadLocalAuthInfo.getMongoQueryComment());

Привет, кто-нибудь может помочь с этим?

1 Ответ

0 голосов
/ 05 октября 2018
Database db = DatabaseGroup.getInstance().getDatabase(colName);
        String hint = "dataCenter_1_ownerAccountId_1__id_1";
        Map<String, Object> map = new LinkedHashMap<String, Object>();
        map.put("aggregate", colName);
        map.put("pipeline", aggregateList);
        map.put("allowDiskUse", true);
        map.put("cursor", new BasicDBObject());
        if (hint != null) {
            map.put("hint", hint);
        }
        BasicDBObject query = new BasicDBObject(map);
        BasicDBObject resultDoc = db.databaseForSearch.runCommand(query,
                Config.getInstance().getReadPreferenceEntity(colName), BasicDBObject.class);
        BasicDBObject resultCursor = (BasicDBObject) resultDoc.get("cursor");
        List<BasicDBObject> list = (List<BasicDBObject>) resultCursor.get("firstBatch");
        for (BasicDBObject each : list) {
            lstDBObjects.add(each);
        }
...