где состояние в Mongodb Mapreduce - PullRequest
1 голос
/ 05 мая 2011

Как указать условие в mongos mapreduce, как мы это делаем в функции группы mongos.

Мои данные похожи на

{lid:1000, age:23}, {lid:3000, age:23}, {lid:1000, age:24}. 

Я хочу испускать только крышки со значением 1000. emit(this.lid, this.age). Но это будет излучать все ценности. Я хочу иметь условие здесь. Есть ли какие-либо средства в карте уменьшить? Я попытался отфильтровать, используя условие if в функции Reduce, но оно не работает

Ответы [ 2 ]

9 голосов
/ 05 мая 2011

Вы можете сделать это в параметре query.Со страниц документации: http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-Overview

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]
 }
);
1 голос
/ 05 мая 2011

Ваша функция отображения - это функция JavaScript.Вы можете заставить его делать что угодно, например:

if (this.lid == 1000) emit(whatever);
...