【发布时间】:2016-10-17 21:12:49
【问题描述】:
他们是通过 java 驱动程序执行 MongoDB map reduce 作业的一种方式,您可以在其中创建包含函数的范围 DBObject。
我可以在 javascript 中执行我的 map reduce 配置,其中传入的范围包含实用程序函数,但我不知道如何使用 java 驱动程序执行此操作。
我使用 mapReduceCommand 设置范围
c.addExtraOption("scope",new BasicDBObject().append('average',function(){ return false;}));
但是我无法让映射器/缩减器识别范围组件“例如”平均值作为函数。如果我使用引号,map reduce 上下文认为它是一个字符串,但如果不是,我似乎无法解析范围组件。
如何通过java驱动获取scope组件中的一个函数?
感谢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>
【问题讨论】:
-
您能否提供更多详细信息,例如如何使用地图作为范围对象。有可能吗?