是他们通过创建包含函数的作用域DBObject的java驱动程序执行MongoDB map reduce作业的一种方式。在MongoDB下java驱动程序的Mapreduce命令范围;将函数添加到作用域
我可以在javascript中执行我的map缩减配置,其中传入的范围包含实用程序函数,但我无法弄清楚如何使用java驱动程序执行此操作。
我安装使用mapReduceCommand的
c.addExtraOption("scope",new BasicDBObject().append('average',function(){ return false;}));
但是我不能得到映射器/减速器识别范围的范围组件“例如”平均作为一个函数。如果我使用引号,映射reduce上下文认为它是一个String,但是如果没有,我似乎无法使范围组件解析。
如何通过java驱动程序获取作用域组件中的函数?
感谢Ren的回答,下面是一个spring bean配置,用于为函数设置mongodb java驱动程序的作用域。
<util:map id="mrScope"
key-type="java.lang.String"
value-type="java.lang.Object">
<entry key="buckets"><bean class="com.mongodb.util.JSON" factory-method="parse"><constructor-arg value="[0,10,15,20,25,30,35,40,45,50,55,60,65]"/></bean></entry>
<entry key="average">
<bean class="org.bson.types.CodeWScope">
<constructor-arg value="function() {var s = 0;for (var i = 0; i > arguments.length; i++) s += arguments[i];return s/arguments.length;}"/>
<constructor-arg><bean class="org.bson.BasicBSONObject"/></constructor-arg>
</bean>
</entry>
你能否提供更多的细节,如如何使用地图作为范围对象..是否有可能? – gsuresh92 2015-12-23 09:38:01