В Java-драйвере MongoDB как передать ключевую функцию ('keyf') команде 'group' - PullRequest
1 голос
/ 10 октября 2011

Я бы хотел использовать команду mongodb group с параметром 'keyf' через драйвер java. Кто-нибудь был успешным с этим?

Ответы [ 2 ]

4 голосов
/ 18 октября 2011

Вы должны использовать устаревший метод DBCollection.group (DBObject args) и добавить код JavaScript функции ключа в виде строки под ключом DBObject с именем "$ keyf".

BasicDBObject args  = new BasicDBObject();
args.put("ns", nameSpace);
args.put( "initial" , initialDBObject );
args.put( "cond" , queryDBObject );
args.put( "$reduce" , reduceJavasriptCodeString );
args.put("$keyf", keyfJavascriptCodeString );
if( finalize != null ) args.put("finalize", finalizeJavascriptCodeString );
DBObject groupResult = mydbCollection.group(args);
1 голос
/ 31 мая 2012

Этот кусок кода должен сделать работу за вас:

public static CommandResult exeMapReduceAlikeGroupCmd(DB db, String colName, String keyFunc, DBObject query,
                                                      String reduceFunc, DBObject initial) {
    BasicDBObject cmd = new BasicDBObject("ns", colName);// this is the collection name
    cmd.append("$keyf", keyFunc);// keyf function
    cmd.append("cond", query); // cond query object
    cmd.append("$reduce", reduceFunc);// reduce function
    cmd.append("initial", initial);// initial value
    cmd = new BasicDBObject("group", cmd);
    return db.command(cmd, db.getOptions());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...