MongoDB+PHP+cursor.forEach()-有解决方法吗?

MongoDB+PHP+cursor.forEach()-有解决方法吗?,php,mongodb,mapreduce,Php,Mongodb,Mapreduce,我正在MongoDB中对多个条目进行一些复杂的数据处理,首先我要进行map/reduce/finalize,然后我需要执行一些其他逻辑来计算和写入总计以及在map/reduce本身中无法计算的其他数字 我已经创建了一个单独的JS函数来运行db.eval,它完成了我需要做的事情,但是我刚刚发现在MongoDB 3.0中db.eval被弃用了,这对我来说是个麻烦,因为我有一个升级到3.0的计划,我们真的需要它的新WiredTiger引擎 我已经将db.cursor.forEach函数视为实现类似逻辑

我正在MongoDB中对多个条目进行一些复杂的数据处理,首先我要进行map/reduce/finalize,然后我需要执行一些其他逻辑来计算和写入总计以及在map/reduce本身中无法计算的其他数字

我已经创建了一个单独的JS函数来运行db.eval,它完成了我需要做的事情,但是我刚刚发现在MongoDB 3.0中db.eval被弃用了,这对我来说是个麻烦,因为我有一个升级到3.0的计划,我们真的需要它的新WiredTiger引擎

我已经将db.cursor.forEach函数视为实现类似逻辑的另一种方式,但目前的MongoDB PHP驱动程序似乎不支持它


>问题是,在Mango PHP堆栈中是否有执行复杂文档功能的方法?

< P>蒙戈的MapReduce是用JavaScript实现的,基于C++的IS,对我来说更快。您考虑过使用聚合框架吗?

好吧,我需要做的事情不可能仅在聚合框架本身内完成。可能会混合使用几个不同的聚合管道,并添加PHP中介逻辑,这最终可能不会快多少,而且肯定会更加复杂和不可维护。因此,我更愿意在Mongo端保留JS中所有繁重的数据处理。现在我决定继续使用db.eval,因为它在3.0中仍然可用,尽管不推荐使用。这并不理想,但其他可用的解决方案似乎更糟糕。eval在3.0中被弃用,因为它通常很糟糕。人们决定把它扔掉,而不是把它保存起来,以备偶尔使用。你会考虑提供更多关于你试图做的计算的信息,这样我们就可以确定是否有一个好的方法来使用聚合框架?您应该看到eval和aggregation之间的数量级差异。