如何在mongos group功能中指定mongos mapreduce中的条件。
我的数据就像
{lid:1000, age:23}, {lid:3000, age:23}, {lid:1000, age:24}.
我想只发出值为1000的盖子。emit(this.lid, this.age)
。但这会发出所有价值。我想在这里有一个条件。地图中是否有任何减少方法?我试图在reduce函数中使用if条件进行过滤,但它不起作用
答案 0 :(得分:9)
您可以在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 :(得分:1)
您的映射功能是一个javascript函数。你可以做任何你想做的事情,例如:
if (this.lid == 1000) emit(whatever);