Где состояние в Mongodb Mapreduce
Как мне указать условие в mongos mapreduce, как это делается в функции группы mongos.
Мои данные как
{lid:1000, age:23}, {lid:3000, age:23}, {lid:1000, age:24}.
Я хочу испускать только крышки, имеющие значение 1000. emit(this.lid, this.age)
, Но это будет излучать все ценности. Я хочу иметь условие здесь. Есть ли какие-либо средства в карте уменьшить? Я попытался отфильтровать, используя условие if в функции Reduce, но оно не работает
2 ответа
Вы можете сделать это в query
параметр. Со страниц документации: http://www.mongodb.org/display/DOCS/MapReduce
db.runCommand(
{ mapreduce : <collection>,
map : <mapfunction>,
reduce : <reducefunction>
--> [, query : <query filter object>] <--
[, sort : <sorts the input objects using this key. Useful for optimization, like sorting by the emit key for fewer reduces>]
[, limit : <number of objects to return from collection>]
[, out : <see output options below>]
[, keeptemp: <true|false>]
[, finalize : <finalizefunction>]
[, scope : <object where fields go into javascript global scope >]
[, verbose : true]
}
);
Ваша функция отображения - это функция JavaScript. Вы можете заставить его делать все, что захотите, например:
if (this.lid == 1000) emit(whatever);